考虑下面的两个图。上面的一个在右端包含一个普通箭头,而下面的一个在左端包含一个菱形箭头,而在右端包含一个普通箭头。本伟大的书GoF的同时具有这两种图表的用法。
我想了解菱形在第二种情况下表示什么,以及这两种情况中的哪一种在Customer
和之间具有更强的关联性Order
。
在这两种情况下Customer
,Order
班级是否负责班级的生命周期?
Answers:
如果没有钻石,那么我们有一个简单的关联。
如果菱形为空,则表示它是聚集体。这种关系比简单的关联更强大。在这种情况下,客户汇总订单。
如果钻石是黑色的,则表示它是一种成分,它比聚合更强,因为聚合的类别不能由其他类别聚合。它的“寿命”取决于容器。
我认为它的解释更加清楚了:
顾客和订单是“具有”的组成关系,因为如果顾客不复存在,那么他/她的订单也就不存在了。因此,容器(客户)与该容器内的实例(订单)之间存在生命周期依赖性。当容器停止存在时,其所有实例也将消失。
另一方面,如果我们说客户有一本书。在这种情况下,我们具有“ has-a”聚合关系。因为如果客户不复存在,则该书仍然可用。
它表示聚合。从维基百科:
在UML中,它在树的包含类末端用图形表示为空心菱形,并用单线将包含的类与包含的类连接起来。聚合在语义上是扩展的对象,在许多操作中都将其视为一个单元,尽管实际上它是由几个较小的物体组成的。