2020-06-27 真实世界中的模式
定义设计模式
模式是在某情境(context)下,针对某问题的某种解决方案。
情境就是应用某个模式的情况。这应该是会不断出现的情况。
问题就是你想在某情境下达到的目标,但也可以是某情境下的约束。
解决方案就是你所追求的:一个通用的设计,用来解决约束、达到目标。
名称
意图 Intent
动机 Motivation
适用性 Applicability
结构 Structure
参与者 Participants
协作 Collaborations
结果 Consequences
最广为人知的分类方式,根据模式的目标分成三个不同类目:创建型、行为型和结构型。
创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要实例化的对象中解耦。
行为型模式,涉及到类和对象如何交互及分配职责。
结构型模式可以让你把类或对象组合到更大的结构中。
另一种分类方式:模式所处理的是类或对象。
类模式描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的。
对象模式描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态、更有弹性。
反模式
反模式(Anti-Pattern)看起来总像是一个好的解决方案,但是当它真正被采用后,就会带来麻烦。
通过将反模式归档,我们能够帮助其他人在实现它们之前,分辨出不好的解决方案。
像模式一样,有许多类型的反模式,包括了开发反模式、OO反模式、组织反模式和领域特定反模式。
让设计模式自然而然地出现在你的设计中,而不是为了使用而使用。
设计模式并非僵化的教条,你可以依据自己的需要采用或调整。
总是使用满足需要的最简单的解决方案,不管它用不用模式。
请牢记:你所遇到的大多数的设计模式都是现有模式的变体,而非新的设计模式。