设计模式是一个被反复谈论的架构主题,它为特定上下文中的常见设计问题提供了解决方案,并描述了这种解决方案的结果。有两个重要的属性。首先,描述了经过验证的、成功的设计技术,这些技术可以按上下文相关的方式进行定制,以便满足新的设计场合的要求。其次,在提及某个特定模式的应用时不仅包括其中用到的技术,还包括应用该模式的动因以及应用后所达到的效果。
(算法不是设计模式,也不是“编程模式”)
举个例子,当我们看到Bridge模式应用于某项设计时,我们知道在一个简单的机制层面,抽象数据类型实现被分离成一个接口类和一个实现类,原因是为了将接口从实现中强有力地分离出来,这样,改变实现将不会影响使用接口的用户。这种分离会带来运行期开销,知道应该怎样对抽象数据类型的源代码进行布局,还知道许多其他细节。
首先,设计模式必须具有一个毫无歧义的名字。
其次,对模式描述时必须定义该模式所能解决的问题。
再次,对模式描述时要记述该问题的解决方案。
最后,对模式描述时要记述将该模式应用于某个上下文的后果。
设计模式常常被描述为“微架构”,它们可以与其他模式进行组合从而生成一个新的架构。