聚合(Aggregation)和组合(Composition)的区别

聚合(Aggregation)

一種鬆散的對象閒的關係
部分可獨立于聚合而存在

 关联是表示两个类的一般性联系,比如“学生”和“老师”就是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:
从实现的角度讲,聚合可以表示为:
class A {...} class B { A* a; .....}  
当B类销毁的时候,A的指针a并不会被销毁的,在内存中还有a的位置了。
 
組合(Composition)
一種非常強烈的對象之間的關係
組合一旦銷毀的話,必須銷毀所有部分或把負責他們的權利轉移給其他對象

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...