定义
尽量使用对象组合/聚合,而不是继承关系达到软件复用的目的。
聚合(has-A)、组合(contains-A)
优点
可以使系统更加灵活,降低类与类之间的耦合度,一个类的变化对其他类造成的影响相对较少。
何时使用合成/聚合、继承
合成 contains-A
- 动物由多个器官组成,丢失一部分整体就会无法使用。
- 翅膀—>大雁
聚合 has-A
- 整体由多个个体聚合而成,丢失一部分并不会对整体产生非常大的影响。
- 大雁—>雁群
继承is-A
- 相同类型但各有差异,将相同的属性抽取出来封装成父类,子类继承并新增独特属性。
- 富士山苹果—>苹果—>水果
Composition/Aggregation Reuse Principle