文档地址:《设计模式之禅》
切入故事: 我有一个梦想……
定义: Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦, 使得两者可以独立地变化。 )
通用类图:
● Abstraction——抽象化角色
它的主要职责是定义出该角色的行为, 同时保存一个对实现化角色的引用, 该角色一般是抽象类。
● Implementor——实现化角色
它是接口或者抽象类, 定义角色必需的行为和属性。
● RefinedAbstraction——修正抽象化角色
它引用实现化角色对抽象化角色进行修正。
● ConcreteImplementor——具体实现化角色
它实现接口或抽象类定义的方法和属性。
* 抽象角色引用实现角色,或者说抽象角色的部分实现是由实现角色完成的。
优点:
● 抽象和实现分离
● 优秀的扩充能力
● 实现细节对客户透明
使用场景:
● 不希望或不适用使用继承的场景
● 接口或抽象类不稳定的场景
● 重用性要求较高的场景
注意事项:
桥梁模式的意图还是对变化的封装, 尽量把可能变化的因素封装到最细、 最小的逻辑单元中, 避免风险扩散。 因此在进行系统设计时, 发现类的继承有N层时, 可以考虑使用桥梁模式。