聚合和组合同样是来描述类的关系的,他们有很多相似的地方又有很多有差别的地方。
为了便于更好地理解和应用两个概念,在这里做一个简单的比较。
首先,类和类之间的关系有很多种。如关联、依赖、泛化、实现等。
而聚合和组合同属于关联关系,同时又与普通的关联关系有区别。
先说说聚合,他描述的是整体和部分的关系,即一个整体包含多个其他的部分。
两个对象是可以单独存在的。在UML中我们用空心的菱形来表示这种关系。
组合,他描述的也是整体和部分之间的关系,同样是整体和部分,但却是不同的。
在UML中,我们用实心的菱形来表示这种关系。
聚合所描述的两个对象是可以单独存在的,也就是说一个对象可以脱离另一个对象而生存。
而组合则不同,组合所描述的两个对象不是独立存在的,它们在生命周期上是有联系的。
举个例子:电脑和电脑外设之间的关系可以用聚合来描述。电脑外设不会因为电脑的不存在而消失,即电脑外设可以脱离电脑而单独生存。
国和家的之间的关系可以用组合来描述。假如国不存在了,家也就不再存在,即国和家的生存期是有关系的。