设计模式—创新模式— Swift中的工厂模式

作为一名崭露头角的计算机科学家,您无疑已经听说过课堂和学习途径中的设计模式。 设计模式是蓝图,概述了创建可重用的面向对象代码,解决常见软件问题的最佳实践。 为了避免给您带来长期的历史教训,我将描述设计模式的起源可以追溯到1970年代,但是随着1994年发布并由Erich Gamma撰写的《设计模式:可重用的面向对象软件的元素》的发布而获得了广泛的接受。 ,理查德·赫尔姆(Richard Helm),拉尔夫·约翰逊(Ralph Johnson)和约翰·弗利斯赛德(John Vlissides),统称为四人帮 (GoF)。 由于对23种经典软件设计模式进行了描述,因此该书大获成功。 设计模式对于帮助您将复杂的系统分解为通常适合于GoF描述的一种设计模式的组件非常有用。 因为我知道作为开发人员,我们喜欢学习,有时需要快速参考才能更好地完成工作,所以我要花时间写一系列文章,这是第一篇,以展示如何使用每种GoF设计模式在Swift中。

通常将设计模式分为几类相关的类别:创建模式,结构模式和行为模式。 在本文的其余部分,我们将重点介绍“ 创造”模式,并介绍我们的第一个模式:“ 工厂”模式。

创作模式:工厂模式

创建模式都是关于消除创建对象所涉及的复杂性的方法。 工厂模式是一种封装创建对象的实现细节的方法,该对象遵循通用的基类或接口。 工厂模式允许接收创建对象的客户端通过公共接口使用对象返回,而无需关心实际创建的具体对象的类型。

工厂模式将创建对象的实现细节与允许用户通用使用该对象的公共接口分开。 让我们考虑一个使这个想法更具体的例子。

想象一下,您经营一家猎头公司,其所有线索均来自各个工作委员会。 对于每个工作委员会,您都收集联系人详细信息并针对潜在的“目标”进行简历。 我的意思是求职者。 获得联系信息后,您可以对其进行分类,并向每个联系人发送样板电子邮件,告知潜在客户与他们的潜在匹配。 您想自动化该过程,因为您每周都要连接数百个潜在客户。 从本质上讲,您只是“以美元计价”,因此您可以处理的潜在客户越多,将潜在客户放置到头寸中的机会就越大,获得报酬的可能性就越大。 我们可以并且将使用工厂模式来解决此问题,以处理电子邮件模板的创建。

我将使用Swift Playground展示一种可以使用工厂模式实现目标的方式。 您可以在这里找到我用于此帖子的操场文件。 为简化起见,我们假设每个联系人将具有个人详细信息以及他们所寻找的角色类型。

首先,我们将创建用于将定制的电子邮件发送给潜在客户的接口(或更确切地说是协议),其中包含有关他们正在寻找的工作类型的信息。

而已! 我们的工厂示例已完成。 现在,我们可以根据他们寻求的工作类型向他们的联系人发送自定义的电子邮件。 只要我们的需求发生变化,我们就可以扩展我们的示例,并且只要我们的界面不变,就不必更改客户端使用的代码。 这意味着我们可以添加新的作业和求职者对象,以将自定义的电子邮件发送给新的联系人类型,而无需更改使用JobContactProtocol的客户端。 我们还可以更改用于创建模板的逻辑,因为这仅包含实现更改。

包起来

工厂模式使我们可以通过允许客户仅依靠公共接口与对象进行交互来隐藏创建对象的实现细节。 这使我们可以消除创建具有类似行为需求的对象所涉及的不必要的复杂性。 工厂模式还促进了分离和抽象,这两者都导致了易于维护的可重用代码。 您可以在此处找到本文的游乐场文件。

简要地说,我还写了一篇文章,说明为什么创建本地应用程序可能是大多数移动开发工作中最好的方法。 阅读并参与讨论!

您的混合应用程序将杀死您
如果您的公司仅开发混合应用程序,那么最终您将蒙受损失。 这只是时间问题。 混合手机… medium.com

如前所述,我将完成一系列有关设计模式的文章。 您可以在下面的文章链接中阅读有关装饰器模式的下一篇文章。

Swift中的设计模式—结构模式—装饰器模式
在上一篇文章中,我通过概述如何使用Factory模式开始了关于Swift中设计模式的讨论。

如果您发现这篇文章有帮助,请推荐给其他人阅读。 如果您想了解有关Swift 3新增功能的更多信息,建议您阅读我的新书《 Swift 3新功能》。 谢谢!