设计模式之Bridge
Bridge模式是基于类的实现层次结构和类的功能层次结构两个概念之上的.
Bridge模式是在类的功能层次结构和类的实现层次结构之间建立了一个桥梁,也就是让功能接口和实现接口解耦,让类的层次结构更清晰,而且易于扩张.
类的实现层次结构
父类定义功能点,功能点通过子类继承实现新功能点.
图:类的功能层次结构
父类定义接口,子类实现接口.
图:
Bridge模式的主要角色
这里使用书中示例,容易理解及讨论.
Display
该角色位于类的功能层次结构的最上层,主要定义功能接口.
CountDisplay
该角色继承Display类,增加功能multiprint.
DisplayImpl
该角色定义了需要实现的接口.
StringDisplayImpl
该角色主要实现DisplayImpl中定义的接口.
类结构体:
Bridge模式的相关讨论
如果在功能层次结构上新增类时,发现实现模块提供的接口不符合,应该如何?
按照在习题9.3的解决方案, 需要分别在功能层次结构和实现层次结构上分别做扩展.这样做的一个好处是把功能接口和实现接口分类,减少了耦合;另一个好处是,现有的功能层次结构上的类和实现层次结构上的类不用修改的基础上,功能层次结构上的类可以使用新扩增的功能.使用Bridge模式案例
跨平台应用的设计案例,例如一个程序需要同时支持Linux, Window和MacOS.把应用的功能点提取出来放到类的功能层次结构上,和操作系统交互的底层接口放到类的实现接口上.