2.2 桥接模式
2021-03-08 本文已影响0人
再凌
将抽象部分与它的实现部分解耦,使得两者都能够独立变化。
例子: 对于颜色和笔头粗细, 这是不可分割的两种特性, 属于设计不当. 但是毛笔可以将水彩色和笔头粗细两种正交特性分开, 是良好的设计.
角色:
- 抽象类: 定义抽象接口, 抽象类中有一个实现类接口的指针
- 实现类接口:抽象定义另外一个维度
- 扩充抽象类: 定义抽象类实现的接口
- 具体实现类: 实现了"实现类接口"定义的接口
用户在持有一个抽象类的指针, 使用的时候实例化成一个扩充抽象类, 同时又可以实例化不同的具体实现类, 保证了两个方向的正交性.
桥接模式和适配器模式有什么不同? 在设计的时候使用桥接模式, 但是如果已经有了两个功能完善的类, 那么使用适配器模式.
桥接模式防止 构建抽象层和实现层过度耦合
缺点: 需要在设计的时候考虑到, 于是两者的关系建立在抽象层, 很难让以后的人识别出来