且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《设计模式解析(第2版•修订版)》—第2章 2.5节交互图

更新时间:2022-09-27 23:10:02

本节书摘来自异步社区《设计模式解析(第2版•修订版)》一书中的第2章,第2.5节交互图,作者【美】Alan Shalloway(艾伦•沙洛维) , James R.Trott(詹姆斯•R.特罗特),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.5 交互图
设计模式解析(第2版•修订版)
交互图

类图可以表示类之间的静态关系,换句话说,类图不能表示任何活动。虽然这非常有用,但有时候我需要表示这些类实例化的对象是如何实际地一起工作的。

表示对象间如何交互的UML图称为交互图(interaction diagram)。最常用的交互图是顺序图,如图2-8所示。


《设计模式解析(第2版•修订版)》—第2章 2.5节交互图

如何阅读顺序图

顺序图应该从顶到底地阅读,如下所述。

最上面的每个矩形都代表一个特定的对象。虽然许多矩形中有类名,但请注意在类名前有一个冒号。一些矩形还有其他名字——例如shape1:Square。
垂直线代表对象的生命线。糟糕的是,大多数UML绘图程序不支持这一点,只能绘制从顶到底的线,因此并不清楚对象实际上什么时候开始存在。
我用这些垂直线之间的水平线表示对象互相发送消息1。
有时候返回值和/或对象会明确表示出来,而有时候只是表示它们要返回。

例如,在图2-8中,

在最上面可以看见Main向ShapeDB对象(这个对象还没有名字)发送了一个“获取形状集合”的消息。
在收到“获取形状集合”的请求之后,ShapeDB对象将:
实例化一个Collection对象;
实例化一个Square对象;
在集合中添加Square对象;
实例化一个Circle对象;
在集合中添加Circle对象;
将集合返回给调用例程(Main)。
其余操作也可以通过这种从顶到底的方式读图来了解,这种图称为顺序图(sequence diagram),因为它描述了操作的顺序。

“对象:类”记号

有些UML图中,需要用派生对象的类来表示该对象。可以通过用冒号连接二者来实现这一点。在图2-8中,我用shape1:Square表示从Square类实例化的shape1对象。

1当对象互相“交谈”时,我们称之为“发送消息”。你需要给一个对象发送请求,让它进行某种操作,而不是告诉其他对象做什么,其他对象会负责搞清楚如何去做。转移责任是面向对象程序设计基本原则之一。这与过程式程序设计完全不同,在后者情况下,你必须控制下一步做什么,因此可能“调用另一个对象的方法”或者“调用操作”。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。