结构型模式之桥接BRIDGE

推荐先看《敏捷开发:原则、模式与实例》了解基本开发原则

一、意图

将抽象部分同其实现部分分离开来,使其可以独立变化。

二、图解

这里写图片描述
上图为了实现多平台应用,使用继承分别定义了X平台和PM平台的两个window子类。当我们添加一个IconWindow子类用于处理图标时,为了支持X和PM平台,我们又不得不实现两个新类XIconWindow和PMIconWindow,而且二者所用代码可能与原来Xwindow和PMWindow类似。如果还有更多平台的话,那不得不定义更多子类。而且当用户创建一个窗口时不得不实例化一个具体类,使得Xwindow或PMWindow与抽象类WIndow捆绑起来,用户很难将代码移植到其他平台。
而使用桥接模式,如下图:
这里写图片描述
可以看到Window的实现部分分离到了WIndowImp中,由于各个平台接口不同,我们继承WIndowImp实现不同平台子类。而原来的抽象类WIndow中通过对WindowImp对象进行动态(可以根据不同平台实例不同子类)引用,实现功能。而IconWindow和TransientWindow通过继承定义新方法调用基类。
这样,我们可以在程序运行时对实现部分进行选择或切换,你可以根据需要进行不同功能的组合;实现对抽象和实现的独立扩充,对实现部分的修改也不会引起客户代码的重新编译;而且还可以对客户隐藏实现部分。当只有一个实现时是没有必要分离接口实现的,二者关系已经是一对一的,但当你希望修改实现部分不会影响客户程序,分离机制还是有用的。

三、结构

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值