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

原创 2001年08月16日 11:14:00


附录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请求。


 

设计模式---可复用面向对象软件的基础 阅读笔记(一)

设计模式---可复用面向对象软件的基础 阅读笔记(一)            扯些淡:为什么会读这本书,有什么样的意义。目的是为了站在更高层次上去看编码,而且在做的也是产品,对于不想只做个简单的、无...
  • u013793732
  • u013793732
  • 2016年09月03日 16:03
  • 449

设计模式-可复用面向对象软件的基础 [读书笔记]

1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。   在软件设计中可能会遇到很多类似的问题,在每次遇到类似...
  • AnnaLoad
  • AnnaLoad
  • 2016年04月17日 10:26
  • 1524

Java从入门到上天 — — 你不能错过的11本好书

2016年Java正好20周岁。就流行度而言,它是当今编程语言毫无争议的王者。各编程语言排行榜,无论TIOBE还是IEEE Spectrum,Java都以较大优势领先其他语言。应用方面,Java语言和...
  • ideallic
  • ideallic
  • 2016年10月21日 14:49
  • 1693

<设计模式可复用面向对象软件的基础> [3.10]、模板(C#)

模板模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型...
  • Momo_Da
  • Momo_Da
  • 2017年10月24日 23:45
  • 156

怎么做到ERP基础数据的整理

原文地址: 整理ERP基础数据的确很繁琐,这个过程并不比ERP上线轻松,但它并不难,只要坚持,就一定能够实现。ERP项目实施成功靠的是三分技术,七分管理,十二分数据。可见,ERP系统中基础数据整...
  • wangnan537
  • wangnan537
  • 2014年10月31日 14:32
  • 1643

尊贵荣耀 诺基亚8系列手机回忆录

PS:智能手机用腻之余,老是想着曾经的经典机型,准备去淘一个来做收藏,看中了8250,顺便查查资料长点知识! 转载自:http://bbs.hupu.com/2162302.html ...
  • jessezappy
  • jessezappy
  • 2015年01月03日 17:21
  • 4575

【PSI/SI学习系列】2.PSI/SI深入学习1——预备知识

PSI/SI 深入学习 BASIC KNOWLEDGE LEARNING OF PSI/SI 预备知识1:PSI/SI关键字 PRE-LEARNING1   关键字 解释 ...
  • u010090005
  • u010090005
  • 2013年10月24日 10:23
  • 3424

软件测试自学指南---从入门到精通

近来,软件测试行业发展迅速,企业越来越重视测试了。越来越多的人加入了测试大军中,很多人也想通过自学来学习软件测试技术加入这个行业,但是现在软件测试的书籍越来越多,也良莠不齐,而且软件测试涉及的技术也越...
  • xc5683
  • xc5683
  • 2013年07月24日 13:30
  • 171428

软件的复用技术及开发方法

软件的复用技术及开发方法 2.1软件的复用技术 软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。软件可复用性的高低影响...
  • judyge
  • judyge
  • 2014年11月13日 01:10
  • 454

软件开发整理的一些工具

技术站点 Hacker News:非常棒的针对编程的链接聚合网站Programming reddit:同上MSDN:微软相关的官方技术集中地,主要是文档类infoq:企业级应用,关注软件开发领域...
  • ejinxian
  • ejinxian
  • 2015年11月25日 21:31
  • 718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:好书整理系列之-设计模式:可复用面向对象软件的基础 8
举报原因:
原因补充:

(最多只允许输入30个字)