设计模式 桥接模式
桥接模式(Bridge Pattern): 将抽象部分与它的实现部分分离,使他们可以独立地变化。桥接模式是一种对象结构型模式,又称柄体模式(Handle and Body)模式或接口模式(Interface)
模式动机:
现需要绘制矩形、原型、椭圆、长方形、正方形,绘制的图形需要有红色、绿色、蓝色等,此时有两种设计方案。第一种为每一种形状窦提供一套各种颜色的版本。第二种根据实际需要对形状和颜色进行组合。
对于有两个变化维度(两个变化的因素)的系统,采用桥接模式来进行设计系统中类的个数更少,且系统扩展更为方便。桥接模式将继承关系转换为关联关系,从而降低类与类之间的耦合,减少代码编写量。
模式结构:
- Abstraction:抽象类
- RefinedAbstraction:扩充抽象类
- Implementor:实现类接口
- ConcreteImplementor:具体实现类
具体类图:
类图解析:Pen为抽象类,不同型号的铅笔继承Pen。Pen中有对象属性color,Color是一个接口,各种不同的具体颜色分别实现了这个接口。
流程解析:客户端知晓毛笔的型号和颜色,通过Pen和Color获取具体型号的毛笔以及具体的颜色,具体型号的毛笔中有颜色这个属性,将已获知的颜色赋予这个属性即可得到具体颜色、型号的毛笔。
桥接模式的优点:
- 分离抽象接口及其实现部分
- 桥接模式类似于多继承方案
- 提高了系统的可扩展性
- 实现细节对客户透明,可以对用户隐藏实现细节
缺点:
- 增加系统的理解与设计难度
- 需要正确的识别出系统的两个独立的变化维度,因此使其适用范围具有一定的局限性