DescribingDesign Patterns
描述设计模式
How do we describe design patterns?Graphical notations, while important and useful, aren't sufficient. They simply capture the end product of thedesign process as relationships between classesand objects. To reuse the design, we must also record the decisions,alternatives, and trade-offs that led to it. Concrete examples are important too,because they help you see the design in action.
我们该如何描述设计模式?图形符号是重要和有用的,永远也不觉得多。它们只是捕捉设计的最终产品进程中类和对象的关系。为了重用设计,这就需要我们必须记录这些决议,替代,权衡。具体的例子是非常重要的,在实际的操作中它会帮助你理解设计
We describe design patterns using aconsistent format. Each pattern is divided into sections according to the followingtemplate. The template lends a uniform structure to the information, making designpatterns easier to learn, compare,
and use.
我们需要用一致的形式来描述设计模式。根据下面的模板把每一个模式分为几部分。模板提供统一的信息结构,使设计模式更容易的学习,比较,和使用。
Pattern Name and Classification
The pattern's name conveys the essence of the pattern succinctly. A good name is vital, because it will become part ofyour design vocabulary. The pattern's classification reflects thescheme we introducein Section
模式名和分类
模式名字简洁地表达了模式的精髓。完美的设计名字是至关重要的,因为它将成为你设计词汇中的一部分。我们将分成几部分介绍设计模式的分类。
Intent
A short statement that answers thefollowing questions: What does the design pattern do? What is its rationaleand intent? What particular design issue or problem does it address?
目的
几个简单的陈述回答了接下来的几个问题:设计模式要做些什么?它的基本原理和目的是什么?它专注于那些特别的设计事件和问题。
Also Known As 其他的称谓
Other well-known names for the pattern, if any.
如果有的话,模式也有其他众所周知的名字
Motivation 动机
A scenario that illustrates a design problem and how the class and object structures in the pattern solve theproblem. The scenario will help you understand the more abstract description ofthe pattern that follows.
解决问题方案是给设计问题添加图片说明和添加在模式中的类和对象结构是如何的图片说明。这个方案会帮助你理解更多的关于以下模式的抽象描述。
Applicability适用性
What are the situations in which the designpattern can be applied?What are examples of poor designs that thepattern can address? How can you recognize these situations?
设计模式可以被应用在那种情况下?设计模式可以解决的设计实例是什么?你是如何识别这种情况的?
Structure 结构
A graphical representation of the classesin the pattern using a notation based on the Object Modeling Technique(OMT) [RBP+91]. We also use interaction diagrams [JCJO92, Boo94] toillustrate sequences of requests and collaborations between objects.Appendix B describes these notations in detail.
基于对象模型技术,在模式中类的图形表示用标记。在对象之间,我们也用交互图表来说明序列的需求和合作。附录B详细的描述了这种标记。
Participants 参与者
The classes and/or objects participating inthe design pattern and their responsibilities.
类和对象参与的设计模式及其责任。
Collaborations 合作
How the participants collaborate to carryout their responsibilities.
参与者是如何合作来履行自己的责任!
Consequences 结果
How does the pattern support itsobjectives? What are the trade-offs and results of using the pattern? Whataspect of system structure does it let you vary independently?
模式是如何支持它的目标?权衡使用模式的结果是什么?系统结构方面各部分是如何实现独立变化的?
Implementation 实现
What pitfalls, hints, or techniques should you be aware of when implementing the pattern? Are therelanguage-specific issues?
当实现这个模式的时候,你是否意识到有意想不到的困难吗?有什么好的建议?有什么好的技巧吗?有特定的语言问题吗?
Sample Code 代码示例
Code fragments that illustrate how you might implement thepattern in C++ or Smalltalk.
代码片段是用来举例说明你是如何实现c++和smalltalk模式?
Known Uses 应用
Examples of the pattern found in realsystems. We include at least two examples from different domains.
在实际系统中发现模式的好例子。在不同的领域中至少可以发现两个例子?
Related Patterns相关的模式
What design patterns are closely related tothis one? What are the important differences? With which otherpatterns should this one be used?
那些设计模式和这个是相关的?在重要的地方有什么不同?和其他的模式相比这个模式是否可以被用?
The appendices provide backgroundinformation that will help you understand the patterns and the discussions surroundingthem. Appendix A is a glossary of terminology we use. We've already mentionedAppendix B, which presents the various notations. We'll also describe aspects ofthe notations as we introduce them in the upcoming discussions. Finally, Appendix C contains source code forthe foundation classes we use in code samples.
附录提供的背景信息会帮助你理解这些模式并讨论与之相关的内容。附录A是我们常用的一些专业词汇。我们已经注意到附录B,介绍了各种符号。我们也会描述各方面的符号在以后的讨论中,最后,附录C包含用代码片段做的基本类源代码