定义
- 将抽象部分与它的具体实现部分分离,使他们可以独立的变化
- 通过组合的方式建立两个类之间的联系,而不是继承
类型:结构型
使用场景
- 抽象和具体实现之间增加更多的灵活性
- 一个类存在两个(或多个)独立变化的维度。且这两个维度都需要进行扩展
- 不希望使用继承,或以为多层继承导致系统类的个数剧增
优缺点
优点:
- 分离抽象及具体实现部分
- 提高的系统的可拓展性
- 符合开闭原则
- 符合合成复用原则
缺点:
- 增加了系统的理解与设计难度
- 需要正确识别出系统中两个独立变化的维度
相关设计模式
- 组合模式:部分和整体的组合
- 适配器模式: 改变已有的接口
- 桥接模式:平行级别不同类的组合;分离抽象和具体的实现
UML类图