桥接模式 Bridge
目的
将抽象和实现解耦,抽象是存在于多个实体中的共同的概念联系
将“类的功能层次结构”和“类的实现层次结构”分离为两个独立的类层次结构,
使得二者可以独立的变化。
应用场景:
- 希望避免抽象和实现之间的永久绑定
- 希望抽象和实现都能够通过子类的方式独立拓展
- 实现不会影响客户
类图解释
参与者:
* Abstraction:定义抽象部分的接口,维护一个指向实现部分对象的引用
* RefinedAbstraction:拓展Abstraction定义的接口
* Implementor:定义实现部分的接口
* ConcreteImplementor
使用结果
- 解耦接口和实现
实现不再被永久绑定到接口上,可以在runtime的时候动态改变实现,高层次部分只需要知道Abstraction和Implementor - 增加拓展性
- 对客户隐藏实现细节
例子
Java实例
例子2
变种
- 省略“实现部分”接口
- 省略功能模块接口
3. 实现共享