首页 iOS.& Swift Books 教程设计模式

1
什么是设计模式? 由约书亚格林写

“额外,额外!阅读所有关于它的内容!”

“害怕新人。被建筑师所爱。阅读关于设计模式的内部故事。真相可能会让你感到惊讶!“

你知道设计模式可以让你成为一个更好的开发人员吗? “当然,”你说 - 你 毕竟读这本书!

你知道设计模式可以帮助你赚更多钱吗?这是真的。您可以通过正确使用设计模式来节省时间,更少工作,最终创建更多伟大的事物。

你知道设计模式可以帮助你打击吸血鬼吗?好的,可能不是 - 设计模式不是银子的子弹,毕竟。

然而,无论您开发什么语言或平台,所有开发人员都应该完全了解它们,设计模式非常有用。他们还应该知道如何以及何时应用它们。这就是你在这本书中学习的内容!

一个真实的例子

介绍告诉您,设计模式是可重复使用的,模板解决方案对常见的开发问题。设计模式 不是 具体实施,而是用作写作代码的起点。它们描述了对经验丰富的开发人员在此之前遇到的问题的通用解决方案。

这是什么意思......?考虑这个非发展,现实世界的情景:

你是园艺公司的骄傲所有者,你的业务真的,呃,盛开。你现在只完成了几个小项目 - 在这里种植的一棵树和几朵花。然而,你只是登陆了一个有几十棵树和花在他们的财产上的大型客户。

您的标准程序一直是您的员工单独将每朵花或树苗携带到位。一旦每次被暂时放置,您的客户在植入地面之前检查并批准该安排。

你担心它会采取 永远 将每朵花和树携带到这个大型项目的地方。你甚至需要一些人携带一些更大的树木。虽然您可以雇用许多临时员工,但您不会在工作中获利。必须是更好的方法!

你决定询问其他园丁他们所做的事情,你发现他们使用了 独轮车和推车。真是个好主意!你告诉你的员工使用购物车同时移动多个鲜花,然后移动沉重的树木。与此同时,您使用休息室椅子椅子观看工人去它......不是管理吗?

所以现在你知道所有关于设计模式!等等,你需要更多细节吗?好的,让我们打破它......

示例说明

这里的“设计模式”是使用 独轮车和推车。这些是园艺中常见的最佳实践工具。同样,软件设计模式在开发中形成一组最佳实践。你可以选择 不是 要使用独轮车和购物车,但类似于避免软件设计模式,通过使项目更加时间和劳动密集型来承担更多风险。

回到“询问其他园丁他们所做的事情”。大多数设计模式已经存在很长一段时间 - 20世纪70年代和20世纪80年代开始生活 - 他们继续良好地工作。

这种寿命部分是由于他们的使用在几十年来的许多项目中验证了事实,但它也是因为他们 不是 concrete solutions.

在园艺场景中,您决定使用推车将用于移动鲜花,轮车将用于移动树木。这些都是 执行 详细信息:您可以使用推车来移动鲜花和树木,只使用独轮车,或任何其他组合使工作更容易。

设计模式是通用的,进入解决方案,用于解决常见问题,如使用轮车和推车。它们是用于具体实现的起点,就像使用鲜花和树木的手推车一样。

有道理?伟大的!现在是时候将花园留在后面并回到软件设计模式的世界。

设计模式的类型

设计模式有三种主要类型:

  1. 结构设计模式:描述对象是如何组成并组合以形成更大的结构。结构设计模式的示例包括模型 - 视图 - 控制器(MVC),模型 - 视图 - ViewModel(MVVM)和外观。

  2. 行为设计模式:描述对象如何彼此通信。行为设计模式的示例是委派,策略和观察者。

  3. 创造设计模式:介绍如何创建或实例化对象。创造模式的示例是Builder,Singleton和Prototype。

您可能会想知道是否知道设计模式的类型真的很重要。好吧,是的......而且没有。

按类型记住所有模式是无用的。大多数开发人员都不这样做。但是,如果您不确定特定模式是否有效,则有时候会考虑相同类型的其他模式有用。您可能会找到一个适合您特殊问题的产品。

笔记:实际上有一些关于一些模式,包括MVVM和MVC的模式是否有持续的辩论 建筑模式,它跨越整个应用程序或子系统架构。因此,它们的范围更广泛,而不是设计模式,它只跨越应用程序的组件或部分。建筑模式甚至可以使用或包含几种设计模式。

出于本书的目的,对架构模式的全面讨论超出了范围。我们选择将MVVM和MVC标记为结构设计模式,因为它们 能够 与组件时尚的其他设计模式一起使用。它们也非常常用于iOS项目,我们希望确保我们涵盖它们。

如果有人说这些实际上是架构模式,我们并不一定不同意,因为它们也可以用这种方式。

如果您想了解有关iOS建筑模式的更多信息,请退房 高级iOS应用程序架构 (http://bit.ly/ios-app-arch)。

对设计模式的批评

如前所述,“软件开发中没有银子弹”,“设计模式也不例外。这意味着简单地知道和使用设计模式不会保证您将创建一个备受架构的软件。有几十个设计模式,所以知道何时以及如何雇用每个都很重要。

对设计模式有何普遍批判?

如果过度使用设计模式,您的项目可能会过于复杂。

您需要注意过度使用任何工具,包括设计模式。您可以通过清晰且正确地定义要在项目中添加设计模式之前解决问题的问题来最小化此问题。

许多设计模式由现代编程语言进行多余的。

真实的是,像SWIFT这样的现代编程语言使一些设计模式无关紧要或微不足道。但是,只是因为 一些 模式通过编程语言提供并不意味着 全部 patterns will be.

设计模式是学习面向对象原则的懒惰替代品。

为什么不学习两者?对面向对象原则的强烈了解肯定会帮助您在您的发展中。

但是,如果您已经知道设计模式适用于特定问题,为什么要从划伤中重新发明解决方案?

但是,但是......在推特上看看这个线程,这绝对显示设计模式毫无价值!

无论特定的批评如何,设计模式已经存在了很长时间,而且他们已被使用 许多 应用。所以在某些时候,你会遇到它们。

我们认为最好了解他们是什么 你碰到了他们,而不是试图打开它,这在我们的经验中通常是在一个星期天晚上迟到的,在发布截止日期前的一天,在发现一个关键的错误之后。

设计模式的好处

我们已经提到了设计模式的许多好处,但还有几个。

设计模式创建一个通用语言。

而不是详细描述特定的解决方案,您可以简单地说明您认为最佳的设计模式。这简化了开发人员之间的通信。

设计模式快速跟踪开发人员onboarding。

在一个使用设计模式的项目上船上的新开发人员比使用完全自定义逻辑的项目更容易。

设计模式让你成为一个更好的人。

好吧,这一个可能仍然辩论。但一定程度的自我改善是 绝不 浪费!然而,这是一个真理对此,作为下一个维护你的项目的开发人员肯定会想到 你是 一个更好的人让他们离开了一个漂亮的设计模式填充的项目,而不是一个意大利面条编码的混乱!

知道设计模式允许您在代码之间发现相似性。

一旦您了解并理解不同的设计模式,您开始注意到其在代码中的使用。这给你一个腿,因为你至少是一个 小的 熟悉如何使用该代码。例如,iOS和MAC编程重量使用委派模式。如果您搬到另一个也使用委派的另一个平台,您将轻松地发现此模式,并立即熟悉代码的组织方式。

关键点

在本章中,您了解了设计模式是什么以及为什么要关心它们。以下是要记住的关键点:

  • 设计模式不是具体的实现,而是,它们是写作代码的起点。

  • 设计模式统称为一系列最佳实践,以帮助您编写更加理解,更容易维护的代码。

  • 设计模式有三种主要类型:结构,行为和创造。

  • 设计模式都有批评和益处。最终,它们在软件开发中是司空见惯的,您可能会遇到它们。因此,良好把握它们是重要的。

有一个技术问题?想报告一个错误吗? 您可以向官方书籍论坛中的书籍作者提出问题和报告错误 这里.

有反馈分享在线阅读体验吗? 如果您有关于UI,UX,突出显示或我们在线阅读器的其他功能的反馈,您可以将其发送到设计团队,其中表格如下所示:

© 2021 Razeware LLC