`
mmdev
  • 浏览: 12950763 次
  • 性别: 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个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...

    设计模式可复用面向对象软件的基础(C++)——强烈推荐

    一本专门介绍设计模式的好书,基于C++的案例,该书深入浅出地介绍了设计模式的概念及应用。

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

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

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

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

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

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

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

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

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

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

    设计模式-可复用面向对象软件的基础(高清)

    最经典的设计模式书籍,介绍23种设计模式,值得一生收藏的好书

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

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

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

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

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

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

    设计模式 GOF 23

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

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

    软件开发的良好书,着重强调了敏捷开发软件的理念。

    深度探索 c++对象模型 中文版

    C++的面向对象的特性。这根本不能叫C++程序。(我想有时间重写一下以前代码也会有很多收获,温故而知新吗)C和C++在编程思想上 是相互矛盾的。这也就是说如果你想学C++,完全可以不学C,只需要一本好书和一个不太笨...

Global site tag (gtag.js) - Google Analytics