@H_502_6@大家都知道UML的类图中一般包含五种关系即 关联 聚合 组合 泛化 依赖 有些人可能会感觉组合跟聚合有点难区分 说难其实是相对其他几种关系而言 实际上想分清这两种关系一点也不难
@H_502_6@聚合跟组合其实都属于关联 只不过它们是两种特殊的关联 因为本是同根生 所以它们之间难免会有相似之处 下面让我们一起来看一下它们之间有何不同
@H_502_6@聚合与组合的概念相信不用我在此赘述大家就已经了解了 下面直接上例子
@H_502_6@程老师的《大话》里举大那个大雁的例子很贴切 在此我就借用一下 大雁喜欢热闹害怕孤独 所以它们一直过着群居的生活 这样就有了雁群 每一只大雁都有自己的雁群 每个雁群都有好多大雁 大雁与雁群的这种关系就可以称之为聚合 另外每只大雁都有两只翅膀 大雁与雁翅的关系就叫做组合 有此可见 聚合的关系明显没有组合紧密 大雁不会因为它们的群主将雁群解散而无法生存 而雁翅就无法脱离大雁而单独生存——组合关系的类具有相同的生命周期
@H_502_6@
@H_502_6@聚合关系图:
@H_502_6@
@H_502_6@组合关系图:
@H_502_6@
@H_502_6@
@H_502_6@
@H_502_6@从从代码上看这两种关系的区别在于:
@H_502_6@雁群类:
@H_502_6@
大雁类:
- public class GooseGroup
- {
- public Goose goose;
- public GooseGroup(Goose goose)
- {
- this.goose = goose;
- }
- }
?
- public class Goose
- {
- public Wings wings;
- public Goose()
- wings=new Wings();
- }
- }