考虑以下两个图表。顶部箭头在右端包含一个普通箭头,底部包含一个箭头,左端有一个菱形,右端有一个普通箭头。 great book GoF具有这两种图表的用法。
我想了解钻石在第二种情况下的含义,以及这两者中哪一项在Customer
和Order
之间建立了更强的关联。
Customer
类在两种情况下都负责Order
类的生命周期吗?
答案 0 :(得分:89)
如果没有钻石,那么我们就会有一个简单的关联。
如果钻石留空,则表示它是聚合。这种关系比简单的关联更强大。在这种情况下,客户汇总订单。
如果钻石是黑色,这意味着它是组合,它甚至比聚合更强,因为聚合的类不能被其他类聚合。它的“生命”取决于容器。
我认为更清楚地解释了这一点:
答案 1 :(得分:16)
客户和订单是" has-a"组成关系,因为如果客户不再存在,那么他/她的订单。因此,容器(客户)与该容器(订单)中的实例之间存在生命周期依赖关系。当容器不再存在时,所有实例都会存在。
另一方面,如果我们说顾客有书。在这种情况下,我们有一个" has-a"聚合关系。因为如果客户不再存在,那么这本书仍然可用。
答案 2 :(得分:8)
它表示聚合。来自维基百科:
在UML中,它在图形上表示为空心菱形 包含树的类结尾,其中一行连接 包含类包含的类。聚合是语义上的 一个扩展的对象,被视为一个单元 虽然在物理上它是由几个较小的物体组成的。