结构型模式之桥接BRIDGE
2017-03-01 10:41
211 查看
推荐先看《敏捷开发:原则、模式与实例》了解基本开发原则
上图为了实现多平台应用,使用继承分别定义了X平台和PM平台的两个window子类。当我们添加一个IconWindow子类用于处理图标时,为了支持X和PM平台,我们又不得不实现两个新类XIconWindow和PMIconWindow,而且二者所用代码可能与原来Xwindow和PMWindow类似。如果还有更多平台的话,那不得不定义更多子类。而且当用户创建一个窗口时不得不实例化一个具体类,使得Xwindow或PMWindow与抽象类WIndow捆绑起来,用户很难将代码移植到其他平台。
而使用桥接模式,如下图:
可以看到Window的实现部分分离到了WIndowImp中,由于各个平台接口不同,我们继承WIndowImp实现不同平台子类。而原来的抽象类WIndow中通过对WindowImp对象进行动态(可以根据不同平台实例不同子类)引用,实现功能。而IconWindow和TransientWindow通过继承定义新方法调用基类。
这样,我们可以在程序运行时对实现部分进行选择或切换,你可以根据需要进行不同功能的组合;实现对抽象和实现的独立扩充,对实现部分的修改也不会引起客户代码的重新编译;而且还可以对客户隐藏实现部分。当只有一个实现时是没有必要分离接口实现的,二者关系已经是一对一的,但当你希望修改实现部分不会影响客户程序,分离机制还是有用的。
一、意图
将抽象部分同其实现部分分离开来,使其可以独立变化。二、图解
上图为了实现多平台应用,使用继承分别定义了X平台和PM平台的两个window子类。当我们添加一个IconWindow子类用于处理图标时,为了支持X和PM平台,我们又不得不实现两个新类XIconWindow和PMIconWindow,而且二者所用代码可能与原来Xwindow和PMWindow类似。如果还有更多平台的话,那不得不定义更多子类。而且当用户创建一个窗口时不得不实例化一个具体类,使得Xwindow或PMWindow与抽象类WIndow捆绑起来,用户很难将代码移植到其他平台。
而使用桥接模式,如下图:
可以看到Window的实现部分分离到了WIndowImp中,由于各个平台接口不同,我们继承WIndowImp实现不同平台子类。而原来的抽象类WIndow中通过对WindowImp对象进行动态(可以根据不同平台实例不同子类)引用,实现功能。而IconWindow和TransientWindow通过继承定义新方法调用基类。
这样,我们可以在程序运行时对实现部分进行选择或切换,你可以根据需要进行不同功能的组合;实现对抽象和实现的独立扩充,对实现部分的修改也不会引起客户代码的重新编译;而且还可以对客户隐藏实现部分。当只有一个实现时是没有必要分离接口实现的,二者关系已经是一对一的,但当你希望修改实现部分不会影响客户程序,分离机制还是有用的。
三、结构
相关文章推荐
- [导入]C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式).zip(9.01 MB)
- 结构型模式:Bridge 桥接模式
- 结构型模式:桥接(Bridge)
- 【结构型模式】bridge(桥接)
- 设计模式之八:Bridge(桥接)—对象结构型模式
- C#面向对象设计模式学习笔记(7) - Bridge 桥接模式(结构型模式)
- 结构型模式 - 桥接模式 (Structual Patterns - Bridge)
- Bridge 桥接模式(结构型模式) 笔记
- 桥接(bridge) 模式--结构型模式之五
- 结构型模式2:桥接模式(Bridge Pattern)
- Bridge桥接(结构型模式)——读李建忠设计模式
- 设计模式八:bridge(桥接)——对象结构型模式
- Bridge桥接模式(结构型模式)
- [设计模式-结构型]桥接(Bridge )
- [结构型(接口型模式)]the Bridge Pattern桥接模式
- 八、 Bridge 桥接(结构型模式)
- Bridge 桥接模式(结构型模式)
- Bridge桥接(结构型模式)
- Bridge 桥接(结构型模式)
- 【设计模式基础】结构型模式 - 4 - 桥接(Bridge)