桥梁模式经常被用来替代继承,重点在于解耦。
定义
将抽象和实现解耦,使得两者可以独立变化。
通用类图如下:

类图中有这么几个角色:
Abstraction抽象化角色定义角色行为并保存一个对实现化角色的引用;
Implementor实现化角色定义角色必须的行为和属性;
RefinedAbstraction修正抽象化角色引用实现化角色对抽象化角色进行修正。
总的来说,抽象角色引用实现角色,部分功能由实现角色完成。
优点
- 抽象和实现分离
使用场景
- 不适合使用即成的场景
- 接口或抽象类不稳定的场景
- 重用性要求较高的场景
注意事项
和继承相比,桥梁模式主要考虑如何拆分抽象和实现。当有N层继承时,可以考虑使用桥梁模式。
参考:
设计模式之禅