`
nathan09
  • 浏览: 145196 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

桥接模式:从操作系统的可移植性说起

 
阅读更多

桥接模式:将抽象部分与它的实现部分分离,使得二者可以独立地变化。(说实话,这个很难理解!!!)

抽象部分:继承关系里的抽象类,一般位于上层,平台无关

实现部分:继承关系里的实现类,一般位于底层,平台相关、实现细节

还是不理解,看实例讲解吧!

比如对一个操作系统来说,平台无关的是高层代码,属于抽象部分,而底层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灭了。。。。。乔布斯在天堂开心的笑了!




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics