1.3 描述设计模式
1.3 描述设计模式
我们怎样描述设计模式呢?图形符号虽然很重要也很有用,却还远远不够,它们只是将设计过程的结果简单记录为类和对象之间的关系。为了达到设计复用,我们必须同时记录设计产生的决定过程、选择过程和权衡过程。具体的例子也是很重要的,它们让你看到实际的设计。
设计模式的格式
我们将用统一的格式描述设计模式,每一个模式根据以下的模板被分成若干部分。模板具有统一的信息描述结构,有助于你更容易地学习、比较和使用设计模式。
模式名和分类
模式名简洁地描述了模式的本质。一个好的名字非常重要,因为它将成为你的设计词汇表中的一部分。模式的分类反映了我们将在1.5节介绍的方案。
意图
是回答下列问题的简单陈述:
- 该设计模式是做什么的?
- 它的基本原理和意图是什么?
- 它解决的是什么样的特定设计问题?
别名
模式的其他名称。
动机
用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景。该情景会帮助你理解随后对模式更抽象的描述。
适用性
- 什么情况下可以使用该设计模式?
- 该模式可用来改进哪些不良设计?
- 你怎样识别这些情况?
结构
采用基于对象建模技术(OMT)[RBP+91]
的表示法对模式中的类进行图形描述。我们也使用了交互图[JCJO92,BOO94]
来说明对象之间的请求序列和协作关系。附录B详细描述了这些表示法。
参与者
指设计模式中的类和/或对象以及它们各自的职责。
协作
模式的参与者怎样协作以实现它们的职责。
效果
- 模式怎样支持它的目标?
- 使用模式的效果和所需做的权衡取舍?
- 系统结构的哪些方面可以独立改变?
实现
实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题。
代码示例
用来说明怎样用C++或Smalltalk
实现该模式的代码片段。
相关模式
- 与这个模式紧密相关的模式有哪些?
- 其间重要的不同之处是什么?
- 这个模式应与哪些其他模式一起使用?
附录
附录提供的背景资料将帮助你理解模式以及关于模式的讨论。
附录A给出了我们使用的术语列表。
前面已经提到过的附录B则给出了各种表示法,我们也会在以后的讨论中简单介绍它们。
最后,附录C给出了我们在例子中使用的各基本类的源代码。