`
izuoyan
  • 浏览: 9230156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

好书整理系列之-设计模式:可复用面向对象软件的基础 8

阅读更多


附录B 图示符号指南
在本书中我们到处使用图表来说明重要的思想。某些图是非正式的,如从屏幕上拷贝下
来的对话框或示意性的对象树等。然而特别地,设计模式使用较为正式的图形符号以显示类
和对象间的关系和交互。本附录具体说明这些图形符号。
我们使用了三种不同的图形符号:
1) 类图描述各个类、它们的结构以及它们之间的静态关系。
2) 对象图描述运行时刻特定的对象结构。
3) 交互图展示对象间请求的流程。
每个设计模式至少包含一个类图。需要时也使用其他图形表示来补充说明。类图和对象
图乃是基于O M T(Object Modeling Te c h n i q u e)[RBP+91, Rum94]的。交互图来自于
Objectory [JCJO92]和B o o c h方法。本书封底内页有对这些符号的概要描述。
B.1 类图
图B - 1 a是以O M T符号表示的抽象类和具体类。一个类表示为一个线框,在顶部以粗体写
着类名,其下是主要的操作,再下是实例变量。类型信息是可选的。我们使用C + +的书写习
惯,将类型名置于操作名(强调返回类型)、变量名或参数之前。斜体表示该类或操作是抽象
的。
在某些设计模式中,标清楚客户类对参与类的引用是很有用的。在类图中,当某个客户
类是某模式的参与者(即该客户类在这个模式中承担一定的责任)时,我们以正常的方式表
示它,可以参见F l y w e i g h t ( 4 . 6 );而当该客户不是该模式的参与者(即客户类在模式中不承担
责任),而仅仅是为了说明其与模式的参与者之间的交互关系时,我们以灰色来表示它。如图
B - 1 b所示。代理模式( P r o x y)就是一个例子。这种灰客户表示法也提醒我们在讨论模式参与
者时不要漏掉客户类。
图B - 1 c展示了类间的几种关系。在O M T表示法中,类继承表示为一个从子类(图中的
L i n e S h a p e)到父类(图中的S h a p e)的三角形连线;代表部分或聚集关系的对象引用表示为
一个根部有菱形的箭头,指向被聚集的类(图中的S h a p e);根部没有菱形的箭头表示相识关
系(图中L i n e S h a p e有一个指向C o l o r的引用,而C o l o r可能是多个S h a p e对象共享的)。在箭头
根部附近可以注明引用的名称,以区别于其他引用。
另一个有用的表示是说明哪个类创建哪个类的对象。由于O M T不支持这种表示,所以我
们用虚线箭头来标记这种情况。我们称之为“创建”关系。箭头指向的是被实例化的对象。
O M T术语“对象图”指类图。我们使用“类图”仅指对象结构图。
O M T还定义了类间的关联( a s s o c i a t i o n)关系,以类间的一条线来表示。关联关系是双向的。虽然在分析
阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段
关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。
例如,D r a w i n g知道S h a p e,而各S h a p e却不知道其所在的D r a w i n g,这就无法用关联关系来表示。
在图B - 1 c中,C r e a t i o n To o l创建L i n e S h a p e对象。
O M T还定义了一种实心圆点,表示“多于一个”。当圆点位于引用的头部,它表示指向或
聚集多个对象。图B - 1 c中D r a w i n g聚集了多个S h a p e类型的对象。
最后,我们认为可以在O M T图上加上一些伪代码,以简要说明操作的实现。图B - 1 d中的
伪代码说明了D r a w i n g类的D r a w操作的实现。
图B-1 类图
B.2 对象图
对象图仅仅描述实例。它描述了设计模式中的对象某个时刻的状况。对象的名字通常表
示为“ a S o m e t h i n g”,其中S o m e t h i n g是该对象的类。我们用来表示对象的符号(对标准O M T
稍作修改)是一个圆角矩形,并以一条直线将对象名与对象引用分开。箭头表示对象引用。
如图B - 2所示。

a) 抽象类和具体类
b) 参与者客户类(左)和绝对客户类(右)
c) 类关系
d) 伪代码注解
交互图展示了对象间各请求的执行顺序。图B - 3就是一个交互图,它描述了一个S h a p e对
象是如何加入到某个D r a w i n g对象中去的。
交互图中从上到下表示时间流向。一条垂直实线表示一个特定对象的生命周期。对象的
命名规则与对象图一样,即在类名前加一个“ a”(例如a S h a p e)。如果某对象在本图所示的时
间区间开始时还未被创建,则用垂直虚线表示,这条虚线一直延伸到它被创建的时间点。
一个垂直的矩形表示对象在活动,也就是说它正在处理某个请求。在操作过程中也可以
向其它对象发出请求,这以一个指向接收对象的水平箭头表示。请求的名称标注在箭头上方。
创建对象的请求以虚线箭头表示。一个发给自身的请求也指向发送者自身。
在图B - 3中,第一个请求是a C r e a t i n To o l发出的,请求创建a L i n e S h a p e。接下来,
a L i n e S h a p e被加入到a D r a w i n g中,这导致a D r a w i n g向它自身发出一个R e f r e s h请求。而在
R e f r e s h操作过程中a D r a w i n g又向a L i n e S h a p e发出一个D r a w请求。


分享到:
评论

相关推荐

    设计模式:可复用面向对象软件的基础--详细书签版

     本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...

    设计模式可复用面向对象软件的基础

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    设计模式:可复用面向对象技术

    four of gang 的好书! 设计模式的先祖!

    (经典)设计模式——可复用面向对象软件的基础(pdf)

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    设计模式可复用面向对象软件的基础(中文版)

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    好书推荐之:分析模式可复用的对象模型中文版

    《分析模式:可复用的对象模型》是一本深入探讨软件设计模式的重要著作,它由Erich Gamma和Richard Helm等著名软件工程专家共同撰写。这本书的中文版为中国的开发者提供了理解和应用这些模式的便利,使他们能够更好...

    设计模式,可复用对象基础

    本书并不是一本介绍面向对象技术或设计的书,目前已有不少好书介绍面向对象技术或设计。本书假设你至少已经比较熟悉一种面向对象编程语言,并且有一定的面向对象设计经验。当我们提及“类型”和“多态”,或“接口”...

    面向对象应用分析和设计

    本书内容丰富,不仅包括面向对象基础理论,还包括了面向对象设计模式,这方面的代表书籍有Fowler的《分析模式》(Analysis Patterns: Reusable Object Models),其中详细阐述了可复用对象模型的模式。Fowler的《UML...

    不可多得的好书-设计模式(china-pub版)

    《设计模式:不可多得的好书(China-Pub版)》是编程领域中一本非常重要的经典著作,尤其在Java开发中被广泛推崇。设计模式是经验丰富的软件开发人员在面对常见问题时,经过时间检验而形成的最佳实践。这本书深入浅...

    敏捷软件开发-原则-模式与实践

    敏捷软件开发-原则-模式与实践 不可不读的好书

    java设计模式(设计实例从面向对象的设计中精选出23个设计模式)

    另外,这也不是一篇高级专题技术论文,而是一本关于设计模式的书,它描述了在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。设计模式捕获了随时间进化与发展的问题的求解方法,因此它们并不是人们从...

    设计模式JAVA(学习java模式的一本好书)

    设计模式作为面向对象编程中的一项重要技术,对于提高代码的可维护性、可扩展性和复用性具有重大意义。GoF(Gang of Four)的《设计模式》一书为程序员们提供了一系列经典的面向对象设计解决方案。尽管原书中使用的...

    thinking in java

    1. **面向对象**:面向对象编程是Java的核心特性之一,通过类和对象的概念来组织和设计软件系统。类是对象的模板,定义了一组属性和行为;对象则是类的一个实例,具有该类定义的所有属性和行为。 2. **多态性**:多...

    C#语言讲解的设计模式好书

    2. **C#语言基础**:设计模式的应用基于对C#语言的深入理解,包括面向对象特性如封装、继承、多态以及.NET框架的核心概念。 3. **创建型模式**:如单例模式(Singleton)、工厂模式(Factory Method)和抽象工厂...

    敏捷软件开发:原则、模式与实践

    ### 敏捷软件开发:原则、模式与实践 #### 知识点概览 - **敏捷软件开发概述** - **敏捷开发的原则** - **敏捷开发的模式** - **敏捷开发的实践方法** #### 敏捷软件开发概述 敏捷软件开发是一种以用户需求为中心...

    设计模式 GOF 23

    本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...

Global site tag (gtag.js) - Google Analytics