桥接模式:将抽象部分与它的实现部分分离,使得二者可以独立地变化。(说实话,这个很难理解!!!)
抽象部分:继承关系里的抽象类,一般位于上层,平台无关
实现部分:继承关系里的实现类,一般位于底层,平台相关、实现细节
还是不理解,看实例讲解吧!
比如对一个操作系统来说,平台无关的是高层代码,属于抽象部分,而底层Bootloader、驱动程序则属于实现部分,是平台相关的。这里假设该操作系统具有良好的可移植性,即遵循DIP原则。
图1:可以移植的操作系统模型
对一个操作系统只要遵循这个模型,那么它就具备非常高的移植性。我们来看如何将这个操作系统轻松的移植到不同的硬件平台上去,假设需要移植到硬件平台由Intel x86、ARM2410、AMD:
图2:OS在不同硬件平台的移植
到目前为止,我们的操作系统OS都还是一个抽象的概念,我们还没有具体到某一个具体的操作系统,比如windows。那么,如果windows遵循这个模型,继承了OS这个抽象是什么效果了,可想而知,应该如下面这样:
图3:使windows具有可移植性
然后是Linux、MacOS,注意:不能让乔布斯知道 :)
图4:使linux和mac os继承OS
还是被乔布斯发现了:(,他说你个笨蛋,做了这么垃圾的东西出来。。。免不了跟乔布斯大吵一架 (因为你知道,一旦你说服乔布斯,他就会把这个想法占位己有,这对MacOS的推广是有利的)
你跟乔布斯解释道:一旦继承了OS,MacOS就会天生支持ARM、Intel、AMD等无数的芯片,再也不用为选芯片烦恼了,,,你继续巴拉巴拉说了一大堆。乔布斯最终同意了你的做法。
乔布斯为什么最终会同意呢,或许他明白了,你这里采用了一种设计模式——桥接模式(正好也姓乔,难怪乔布斯会同意),这的确是个好模式,几乎是完美的,它可以实现软件世界和硬件世界的大统。
为什么说这是桥接模式,来看看桥接模式的结构图,你就会恍然大悟了:
图5:桥接模式结构图
从图4和图5的对比,我们发现了对应关系:
OS——Abstraction
Windows、Linux、MacOS——RefinedAbstraction
移植接口——Implementor
ARM移植接口实现——ConcreteImplementorA
Intel x86移植接口实现——ConcreteImplementorB
再反过来理解一下桥接模式的定义吧:将抽象部分与它的实现部分分离,使得二者可以独立地变化。
新版MacOS上市了,终于MacOS可以跑在任何平台上,一经推出由于其友好的用户界面,很快把Windows灭了。。。。。乔布斯在天堂开心的笑了!
分享到:
相关推荐
在第 16 节中,我们讲过一个 API 接口监控告警的例子:根据不同的告警规则,触发不同类型的告警。告警支持多种通知渠道,包括:邮件、短信、微信、自动语音电话。
Qno侠诺透明桥接模式适合不想更动原有合法IP的PC设定与架构,想快速实现合法IP与虚拟IP均可通过侠诺安全路由访问Internet。企业可依据实际需求来选择适用的模式,让您的企业网络运行更加通畅便利!
JavaScript 设计模式精讲,JavaScript 设计模式精讲,JavaScript 设计模式精讲JavaScript 设计模式精讲JavaScript 设计模式精讲JavaScript 设计模式精讲JavaScript 设计模式精讲JavaScript 设计模式精讲JavaScript ...
桥接模式 桥接模式
图片浏览器的接口设计-桥接模式的运用 解决问题: 一个图像格式有两个基本的方面,一是结构,二是表象。其结构决定了图像是怎样存储的,而其表象决定了...请给出一个示意性的图像浏览器系统,以说明桥接模式的用法。
所有模式都可分为类模式和对象模式两种,类模式是继承,对象模式是委托,而桥接模式和策略模式都是将任务委托给另外一个接口去实现,那么两者的区别什么呢?
设计模式之桥接模式 设计模式之桥接模式 设计模式之桥接模式
桥接模式 C++ 实现
VMware 15虚拟机桥接模式无法上网问题 步骤 1:在设置中找到 网络和internet—>>更改适配器选项—–>>以太网 查看 共享网络给虚拟机(有些电脑不用) 步骤2:查看VMware虚拟网络编辑器的VMnet0桥接模式设置 ...
C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) 体验课程
* 桥接:描述的是关联关系,实现上就是内部组合一个对方的实例对象,通过两个抽象进行交互 * * 代码实现 * (桥接)左侧:外聘老师 * (桥接)右侧:学校,组合外聘老师,执行老师的上课功能
Bridge 桥接模式(结构型模式)视频
利用桥接模式完成以下实例: 1、编辑与作者。出版社的编辑负责策划图书,并遴选作者完成图书的编著,然后根据图书的印张发布图书。作者负责完成图书的编著工作。 2、模拟毛笔:现需要提供大中小3种型号的画笔,...
桥接模式:将抽象部分与它的实现部分分离,使他们可以独立地变化。本例中将不同形式的消息通过不同手段及逆行发送,消息类别为抽象类,而发送方式为实现类
设计模式 - 桥接模式
创建型模式 (100%) 设计模式面面观(8):创建型模式总结 (100%) 设计模式面面观(9):适配器模式(Adapter Pattern)-结构型模式 (100%) 设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式 ...
桥接模式通过将抽象部分和代码部分相分离,使之沿各自的维度变化而不互相影响,使用的时候通过对象参数进行连接,参数可进行变化
桥接模式的例子源码。这个源码因完成仓促,仅用来解释说明桥接模式含义,代码规范稍有欠缺,仅供参考。
桥接模式和装饰模式,设计模式实验报告,BlueJ