桥接模式(Bridge Pattern)
定义
桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使它们可以独立变化。它通过组合代替继承,解决多层继承导致的类爆炸问题,适用于多维度变化的场景(如形状与颜色、设备与操作系统)。
UML 类图
核心角色
- Abstraction:抽象层的接口(如形状、设备),持有对 Implementor 的引用。
- RefinedAbstraction:对 Abstraction 的扩展(如圆形、方形),可添加额外逻辑。
- Implementor:实现层的接口(如颜色、操作系统),定义底层操作(如 draw())。
- ConcreteImplementor:具体的实现类(如红色、Windows),提供底层逻辑的实现。
优点
- 解耦抽象与实现:抽象层和实现层独立扩展,修改一方不影响另一方(如新增颜色无需修改形状类)。
- 避免类爆炸:使用组合代替多层继承,减少子类数量(从 M×N 类减少到 M+N 类)。
- 开闭原则:新增抽象或实现时,无需修改已有代码。
- 运行时绑定:可在运行时动态切换实现(如切换渲染引擎或数据库驱动)。
缺点
- 复杂度提升:需要正确识别抽象与实现的分离维度,设计难度较高。
- 过度设计风险: 如果系统只有单一维度的变化,桥接模式可能增加不必要的复杂性。
代码示例(Java)
抽象与实现分离(形状 + 颜色)
总结:桥接模式通过组合代替继承,解决多维度变化的复杂性,特别适合需要长期维护和扩展的系统。关键在于识别系统中独立的抽象与实现维度,并在设计初期通过桥接模式分离它们。