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包含用代码片段做的基本类源代码

DescribingDesign Patterns 描述设计模式的更多相关文章

  1. Streamline Your App with Design Patterns 用设计模式精简你的应用程序

    Back to Design Patterns Streamline Your App with Design Patterns 用设计模式精简你的应用程序 In Objective-C progra ...

  2. Java描述设计模式(24):备忘录模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 常见的视频播放软件都具备这样一个功能:假设在播放视频西游记,如果这时候切换播放视频红楼梦,当再次切回播放西游记时, ...

  3. Java描述设计模式(12):外观模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在移动互联网没有普及之前,去饭店吃饭的流程大致如下:选座位,排队,点菜,结账.后来移动互联网普及,通过手机APP就 ...

  4. Java描述设计模式(11):观察者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.观察者模式 1.概念描述 观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式.观察者模式定义了一种一对多 ...

  5. Java描述设计模式(02):简单工厂模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景简介 1.引入场景 订餐流程简单描述 1).食品抽象类,规定食品的基础属性操作 2).鱼类,鸡肉类食品类扩展 3).订餐流程类,根 ...

  6. 【design patterns】设计模式

    1.单例设计模式(singleton) 用途举例:对于多个程序使用同一个配置信息对象时比如在连接数据库时使用单例模式,每次只取出一个连接 步骤:①私有化该类的构造函数 ②私有化一个静态的对象 ③公有化 ...

  7. Java描述设计模式(15):责任链模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景描述 1.请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批 当 3<day<= ...

  8. Java描述设计模式(16):代理模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在电商高速发展的今天,快递的数量十分庞大,甚至出现了快递代理行业,简单的说就是快递的主人没有时间收快递,会指定一个 ...

  9. Java描述设计模式(17):调停者模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在公司的日常安排中,通常划分多个部门,每个部门又会分为不同的小组,部门经理的一项核心工作就是协调部门小组之间的工作 ...

随机推荐

  1. Android应用开发基础篇(11)-----ViewFlipper

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/01/2376067.html 一.概述 ViewFlipper这个部件是用来实现多页显示的,多页 ...

  2. Immediate Decodability问题Java解答

    DescriptionAn encoding of a set of symbols is said to be immediately decodable if no code for one sy ...

  3. 《码农周刊》干货精选(Python 篇)

    <码农周刊>已经累计发送了 38 期,我们将干货内容进行了精选.此为 Python 篇. <码农周刊>往期回顾:http://weekly.manong.io/issues/ ...

  4. HDU1712-ACboy needs your help

    描述: ACboy has N courses this term, and he plans to spend at most M days on study.Of course,the profi ...

  5. 03-C语言编码规范和变量

    目录: 一.C语言的编码规范 二.变量 三.浮点型float 四.变量名命名规则 五.变量作用域与生命周期 回到顶部 一.C语言的编程规范 1 语句可以分开放在任意位置 2 空格可以让代码更清晰 3 ...

  6. c风格字符串函数

    十一.C 风格字符串  1)字符串操作  strcpy(p, p1) 复制字符串  strncpy(p, p1, n) 复制指定长度字符串  strcat(p, p1) 附加字符串  strncat( ...

  7. 有意思的C宏

    在Linux内核.嵌入式代码等传统的C代码里,会有一些难以识别的宏定义.我记得在eCos, UBoot, FFmpeg有一些比较BT的宏定义,很难读懂.对于C++程序员来说,最好将这种难读的宏定义转成 ...

  8. Protel99Se使用方法详解

    Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以进行联网设计,具有很强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可 ...

  9. ThinkPHP 3.1.2 视图-1

    一.模板的使用 (重点) a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件 [index].html(.tpl) 更换模板文 ...

  10. 由世纪互联运营的 Windows Azure 现已在中国正式发布

     我们非常高兴地公开发布由世纪互联运营的 Windows Azure,这标志着我们成为第一家在中国国内正式提供公共云平台技术的跨国公司.这一伟大成就的实现,得益于 Microsoft 与世纪互联的 ...