我们怎样描述设计模式呢?图形符号虽然很重要也很有用,但却远远不够,它们只是将设计过程的结果简单记录为类和对象之间的关系。为了达到设计复用,我们必须同时记录设计产生的决定过程、选择过程和权衡过程。具体的例子也是很重要的,它们让你看到实际的设计。
我们将用统一的格式描述设计模式,每一个模式根据以下的模板被分成若干部分。模板具有统一的信息描述结构,有助于你更容易地学习、比较和使用设计模式。
1、模式名和分类
模式名简洁的描述了模式的本质。一个好的名字非常重要,因为它将成为你的设计词汇表中的一部分。模式的分类反应了我们将在1.5节介绍的方案。
2、意图
是回答下列问题的简单陈述:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题?
3、别名
模式的其他名称
4、动机
用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景。该情景会帮助你理解随后对模式更抽象的描述。
5、适用性
什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?你怎样识别这些情况?
6、结构
采用基于对象建模技术的表示法对模式中的类进行图形描述。也使用了交互图来说明对象之间的请求序列和协作关系。
7、参与者
指设计模式中的类和/或对象以及它们各自的职责。
8、协作
模式的参与者怎样协作以实现它们的职责。
9、效果
模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?
10、实现
实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于是吸纳语言的问题。
11、代码示例
用来说明怎样用编程语言实现该模式的代码片段。
12、已知应用
实际系统中发现的模式的例子。每个模式至少包括了两个不同领域的实例。
13、相关模式
与这个模式紧密相关的模式有哪些?其间重要的不同之处是什么?这个模式应与哪些其它模式一起使用?