桥接模式
桥梁模式的重点在解耦。
定义
将抽象和实现解耦,使得两者可以独立的变化。
它使用了类间的聚合关系、继承、覆写等常用功能。解决了继承的缺点而提出的设计模式。
实现
抽象角色引用实现角色,或者说抽象角色的部分实现是由实现角色完成的。
Abstraction
抽象化角色,定义出该抽象角色的行为,同时保存一个对实现化角色的引用。
1 | public abstract class Abstraction{ |
RefindAbstraction
修正抽象化角色,引用实现化角色对抽象化角色进行修正。
1 | public class RefindAbstraction extends Abstraction{ |
Implementor
实现化角色,接口或者抽象类,定义角色必须的行为和属性。
1 | public interface Implementor{ |
ConcreteImplementor
具体实现化角色,实现接口或者抽象类定义的方法和属性。
1 | public class ConcreteImplementor1 implements Implementor{ |
Use
1 | Implementor imp = new ConcreteImplementor1(); |
应用
优点
抽象和实现分离
为了解决继承的缺点而提出的设计模式,在该模式下,实现可以不受抽象的约束,不再绑定到固定的抽象层次上。优秀的扩展能力
可以随意增加抽象和实现。
- 实现细节对客户透明
由抽象层通过聚合关系完成了封装。
使用场景
- 不希望或者不适用使用继承的场景
继承层次太高,无法更细化设计颗粒等场景,需要考虑使用。 - 接口或者抽象类不稳定的场景
接口或者抽象类不稳定,经常变更时,使用桥梁模式。 - 重用型要求高的场景
设计的颗粒度粤西,被重用的可能性越大。
采用继承受到父类的限制,不可能出现太细的粒度。