`
nathan09
  • 浏览: 155297 次
  • 性别: 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灭了。。。。。乔布斯在天堂开心的笑了!




分享到:
评论

相关推荐

    49丨桥接模式:如何实现支持不同类型和渠道的消息推送系统?1

    【正文】 桥接模式是一种设计模式,其主要目的是将抽象部分与其实现部分解耦,使得两者能够独立地进行变化。...在实际开发中,合理运用桥接模式可以有效地降低系统复杂度,提高代码的可读性和可维护性。

    17 桥接模式:组装变频洗衣机.pdf

    这种解耦增强了系统的灵活性,当产品具有多维度变化时,桥接模式能够有效地减少类的数量,并且提高代码的可维护性和可扩展性。在实际开发过程中,桥接模式常用于组件化或模块化的系统设计,特别是在需要灵活组合和...

    透明桥接模式:如何实现合法IP与虚拟IP共捷径?

    Qno侠诺透明桥接模式适合不想更动原有合法IP的PC设定与架构,想快速实现合法IP与虚拟IP均可通过侠诺安全路由访问Internet。企业可依据实际需求来选择适用的模式,让您的企业网络运行更加通畅便利!

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    在桥接模式中,抽象类引用实现类的接口,这样就可以在运行时动态地切换不同的实现,增加了系统的灵活性。例如,在图形用户界面设计中,桥接模式可以用来分离图形对象(如按钮、文本框)和渲染方式(如Windows、Mac ...

    Bridge 桥接模式(结构型模式)

    7. 如何在实际开发中识别并合理使用桥接模式,提高软件设计的灵活性和可扩展性。 通过观看这个视频,开发者不仅可以了解桥接模式的基本概念,还能掌握如何在实际项目中应用桥接模式,提升软件设计的水平。同时,...

    设计模式---桥接模式

    - 当系统需要在抽象层和实现层之间保持可扩展性时。 - 当一个类定义了多个维度的可变性,而这些维度应该独立变化时。 - 当想避免由于类的多层次继承导致的类爆炸问题时。 总之,桥接模式是设计模式中的一种重要工具...

    桥接模式 C++ 实现

    在C++中,桥接模式的应用有助于降低系统的耦合度,提高代码的可扩展性和可维护性。以下是对桥接模式及其C++实现的详细解释。 首先,理解桥接模式的核心概念。它通过引入一个抽象接口作为“桥梁”,使得抽象类和实现...

    桥接模式-设计模式

    总结起来,桥接模式是一种有效的设计模式,用于处理对象之间的多维度可变性问题,它通过分离抽象和实现,提高了系统的灵活性和可扩展性,降低了代码的维护成本。在实际开发中,尤其是在面临复杂需求变化的项目中,...

    windows10 VMware桥接出现无法将网络更改为桥接状态 没有未桥接的主机网络适配器解决方法.docx

    在使用Windows 10操作系统和VMware虚拟机时,可能会遇到一个常见的问题,即当尝试将虚拟机的网络模式设置为桥接时,系统提示“无法将网络更改为桥接状态:没有未桥接的主机网络适配器”。这个问题通常是由于缺少必要...

    设计模式的桥接模式的例子

    桥接模式是设计模式中的一种结构型...总的来说,桥接模式是一种强大的设计工具,它有助于降低系统的复杂性,提高代码的可维护性和可扩展性。理解并恰当运用桥接模式,可以帮助开发者构建更加灵活和可复用的软件系统。

    设计模式之桥接模式BridgePattern

    桥接模式(Bridge Pattern)是设计模式中的...总的来说,桥接模式是一种强大的设计工具,能够帮助我们构建灵活、可扩展的系统。在处理多维度变化时,桥接模式可以有效地降低系统的耦合度,提高代码的可读性和可维护性。

    桥接模式示意代码

    图片浏览器的接口设计-桥接模式的运用 解决问题: 一个图像格式有两个基本的方面,一是结构,二是表象。其结构决定了图像是怎样存储的,而其表象决定了...请给出一个示意性的图像浏览器系统,以说明桥接模式的用法。

    设计模式之桥接模式,内含可运行代码

    总结来说,桥接模式是一种非常有用的设计模式,它有助于减少类的个数,降低系统的复杂度,提高代码的可维护性和可扩展性。通过分离抽象和实现,桥接模式使得系统能够灵活地根据需求组合不同的抽象和实现,达到功能的...

    设计模式 - 桥接模式

    总结来说,桥接模式是一种有效管理抽象和实现之间关系的设计模式,通过分离它们,可以提高系统的可扩展性和可维护性,尤其是在面对多变的实现需求时。理解并适当地应用桥接模式,能够帮助我们构建更加灵活、易于维护...

    设计模式之桥接模式

    总结来说,桥接模式是一种强大的设计工具,它允许我们将系统的不同方面分离开来,使得这两部分可以独立发展,降低了模块间的耦合度,增加了系统的灵活性。在面对多维度变化的场景时,桥接模式是值得考虑的设计选择。

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式)

    在C#编程中,桥接模式的应用能够帮助我们更好地解耦系统,提高代码的灵活性和可扩展性。 在C#中,面向对象设计模式通常用于解决复杂度问题,桥接模式则是一种更为高级的设计策略。它通过引入一个抽象接口,将抽象类...

    结构型模式之桥接模式(bridge)

    在实际应用中,桥接模式可以用于各种需要分离抽象和实现的场景,比如图形库设计、操作系统接口设计等。例如,一个图形库可能有多种绘制方式(如线条、填充等),每种方式又有多种颜色可以选择,这时就可以使用桥接...

    VMWare 6.0桥接模式虚拟机网络配置

    VMWare 6.0 桥接模式虚拟机网络配置 VMWare 6.0 桥接模式虚拟机网络配置是虚拟机网络配置中的一种简单而又重要的网络连接模式。通过以下步骤可以设置桥接模式虚拟机网络配置:首先,确保在相应虚拟机的以太网设置...

    C#面向对象设计模式纵横谈(8):Bridge 桥接模式(结构型模式) (Level 300)

    通过使用桥接模式,我们可以将抽象和实现解耦,从而降低类的数量,提高代码的可扩展性和灵活性。 桥接模式的核心思想是将抽象类和它的实现类分离开来,形成两个独立的继承体系。这样,抽象部分可以通过组合的方式...

Global site tag (gtag.js) - Google Analytics