好书整理系列之-设计模式:可复用面向对象软件的基础 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请求。


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 设计模式是一种通过提供可复用的解决方案来解决面向对象软件开发中常见问题的方法。这些问题可能包括对象之间的通信、对象的创建和销毁、以及如何组织代码等。 设计模式能够提供一种标准化的方法来解决这些问题,使得开发人员可以更加高效地构建软件系统。设计模式提供了一种用于描述和交流解决方案的共同语言,使得不同开发人员之间可以更好地合作。 设计模式的另一个重要特点是其可复用性。一旦开发人员学会了某个设计模式,他们可以在不同的项目中重复使用该模式,从而节省开发时间和资源。这种可复用性使得设计模式成为面向对象软件开发的基础之一。 《设计模式复用面向对象软件基础》这本书将深入介绍设计模式的原理、分类和具体实现。通过学习这本书,读者可以掌握常见设计模式的应用方法,并了解如何根据具体问题选择最合适的设计模式。该书还包含了大量的示例代码和实际案例,帮助读者更好地理解和应用设计模式。 总结来说,设计模式是一种解决面向对象软件开发中常见问题的方法,具有可复用性。《设计模式复用面向对象软件基础》这本书通过系统地介绍设计模式的原理、分类和实现,在提高开发效率的同时,帮助读者建立起良好的面向对象软件开发思维方式。 ### 回答2: 设计模式是一种解决软件设计问题的经典方法,它提供了一些通用的解决方案和思想,可用于构建复用面向对象软件设计模式的目标是提高软件的可维护性、可扩展性和灵活性。 设计模式包括三种类型:创建型、结构型和行为型。创建型设计模式关注如何实例化对象,包括简单工厂、工厂方法、抽象工厂、建造者和原型。结构型设计模式关注对象之间的组合,包括适配器、装饰器、代理、组合、外观、享元和桥接。行为型设计模式关注对象之间的通信和职责分配,包括观察者、模板方法、策略、状态、责任链、命令、备忘录、迭代器和访问者。 设计模式可提供可复用的解决方案,不仅可以提高软件的开发效率,还能确保软件的可靠性和可维护性。通过使用设计模式,开发人员可以更加清晰地理解软件系统的结构和功能,使得软件系统更易于理解和维护。同时,设计模式还能促进团队之间的协作和交流,提高团队的开发效率。 《设计模式复用面向对象软件基础》这本书提供了系统和详细的介绍和讲解了各种设计模式的原理、实现方法以及应用场景。通过阅读这本书,读者可以深入理解设计模式的核心概念,学习如何在实际项目中应用设计模式,提高软件的质量和可维护性。这本书对于想要深入学习和应用设计模式软件开发人员来说是一本非常有价值的参考资料。 ### 回答3: 设计模式指的是用于解决软件设计中常见问题的经验性解决方案。它们是软件开发人员在解决类似问题时所提炼出来的最佳实践。设计模式的目标是提高软件的可复用性、可扩展性和可维护性。 设计模式是通过将常见的设计问题和对应的解决方案进行抽象和总结而得到的。它们是由经验丰富的软件开发人员们共同提炼和归纳出来的,是他们在实际项目中不断探索和总结出来的经验。 设计模式是可复用的,因为它们提供了一种标准化的解决方案,可以在不同的项目中重复使用。这样可以减少开发人员的工作量,提高开发效率。 同时,设计模式也能够提升软件的可扩展性,使得软件在面对变化时更加容易进行修改和扩展。通过使用设计模式软件的各个组件之间的耦合性得到了降低,使得系统更加灵活和易于维护。 最后,设计模式使得软件更易于维护。因为设计模式遵循了一系列约定和规范,开发人员能够更快地理解和修改代码,从而降低了维护成本。 设计模式复用面向对象软件基础,是因为它们提供了一套可复用的解决方案,能够解决软件设计中常见的问题。通过学习和应用设计模式,可以提高软件的质量和开发效率,同时也可以提升开发人员的设计能力和职业素养。在软件开发领域中,设计模式是不可或缺的一部分。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coolstar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值