考虑下面的两个图表。上面的一个在右端包含一个普通箭头,下面的一个包含一个箭头与菱形在左端和一个普通箭头在右端。伟大的书《 GoF 》同时使用这两种图。
我想了解 钻石在第二种情况下意味着什么,以及这两种情况中哪一种能够在 Customer和 Order之间提供更强的联系。
Customer
Order
在这两种情况中,Customer类是否负责 Order类的生命周期?
它代表聚合。来自维基百科:
在 UML 中,它在 包含树的类结尾,只有一条线连接 包含的类转换为包含的类。聚合在语义上是 在许多情况下被视为一个单元的扩展对象 操作,虽然物理上它是由几个较小的对象。
Http://en.wikipedia.org/wiki/class_diagram
如果有 没有钻石,那么我们有一个简单的 协会。
如果菱形是 空荡荡的,则表示它是 聚合。这种关系比简单的联想更强烈。在这种情况下,Customer 聚合了 Order。
如果菱形是 黑色,这意味着它是 作文,它甚至比聚合更强,因为复合类不能被其他类复合。它的“生命”取决于容器。
我认为这个解释得更清楚一点,在:
客户和订单是一个“ has-a”组合关系,因为如果客户不存在了,那么他/她的订单也不存在了。因此,容器(客户)和该容器(订单)中的实例之间存在生命周期依赖关系。当容器不再存在时,它的所有实例也将不复存在。
另一方面,如果我们说一个顾客有一本书。在本例中,我们有一个“ has-a”聚合关系。因为如果客户不再存在,这本书仍然可用。