Aggregation 与 Composition 的区别
Aggregation: 聚合
Composition: 组合
它们都代表一种关联(association)关系
聚合较松散,而组合较紧密
我觉得可以理解为生命周期
1、组合关系。
几个点(point)连在一起构成了一个多边形(polygon)。如果多边形不存在了,构成多边形的点也就不存在了,它们是“同生死,共患难”。。。。
就像数据库中的两个表,user(可能保存用户名、密码、用户类型等)和userinfo(可能保存地址、身份证号码等),如果要删除韚ser,必然同时要删除userinfo
2、聚合关系
一个订单,上面包含几个产品信息。如果订单被取消或删除了,产品还是要存在的。它们是聚合关系。
Composition: 组合
它们都代表一种关联(association)关系
聚合较松散,而组合较紧密
我觉得可以理解为生命周期
1、组合关系。
几个点(point)连在一起构成了一个多边形(polygon)。如果多边形不存在了,构成多边形的点也就不存在了,它们是“同生死,共患难”。。。。
就像数据库中的两个表,user(可能保存用户名、密码、用户类型等)和userinfo(可能保存地址、身份证号码等),如果要删除韚ser,必然同时要删除userinfo
2、聚合关系
一个订单,上面包含几个产品信息。如果订单被取消或删除了,产品还是要存在的。它们是聚合关系。
Composition 是一种特殊形式的Aggregation (除了lifetime区别). 在UML语法里Composition用实心箭头表示,Aggregation用空心箭头表示。我个人理解,Composition关系中的component可以看作是heavy-weight property. 它是一个实体组成部分但是又不能独立于容器主体。