Version: Next
Bridge桥接模式
定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化
源发问题
在抽象类的派生体系中,如果既定义了具有功能使用逻辑的抽象方法,又定义了功能实现的抽象方法,这种结构会因二者组合变化让派生类数目激增。如果一个抽象类具有二维变化特性,这将导致派生类数目激增
解决方案
将功能使用部分和实现部分的抽象定义分离,使二者可以独立变化。在类图中,假设抽象类Abstraction定义了如何绘制文字和文字边框的功能,而在抽象类Implementor当中则对该窗口在不同平台下文字和边框如何绘制给出定义,他们之间通过关联连接到一起。
如果Implementor中的抽象方法定义在Abstraction中,则功能的使用抽象定义和实现抽象定义混在一起,造成Abstraction派生子类数量上的激增。
UML类图
代码
优缺点
- 优点 将功能的使用和实现两种抽象定义分开,变继承方式为关联组合方式,从而使它们都可以独立变化,可以在程序运行时刻对它们进行选择、切换和组合,系统的结构层次更加清晰
- 缺点 功能实现通过继承抽象类Implementor来进行。这种方式灵活性不够,因为功能往往需要扩充,从而引起Implementor接口的变化