`
Jameslyy
  • 浏览: 403441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Bridge模式

阅读更多

       Bridge模式,将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF 《设计模式》]

       以日志记录工具为例子来说明Bridge模式。现在我们要开发一个通用的日志记录工具,它支持数据库记录DatabaseLog和文本文件记录FileLog两种方式,同时它既可以运行在.NET平台,也可以运行在Java平台上。

       根据我们的设计经验,应该把不同的日志记录方式分别作为单独的对象来对待,并为日志记录类抽象出一个基类Log出来,各种不同的日志记录方式都继承于该基类。

       遵循开放-封闭原则的同时,需要遵循类的单一职责原则。我们需要解耦这两个方向的变化,把它们之间的强耦合关系改成弱联系。我们把日志记录方式和不同平台上的实现分别当作两个独立的部分来对待。

       对于日志记录方式,类结构图是:

       


       现在我们引入另外一个抽象类ImpLog,它是日志记录在不同平台的实现的基类,结构图如下:

      


       这时对于日志记录方式和不同的运行平台这两个类都可以独立的变化了,我们要做的工作就是把这两部分之间连接起来。那如何连接呢?在这里,Bridge使用了对象组合的方式,类结构图如下:

       

       可以看到,通过对象组合的方式,Bridge模式把两个角色之间的继承关系改为了耦合的关系,从而使这两者可以从容自若的各自独立的变化,这也是Bridge模式的本意。

       如果在开发中遇到有两个方向上纵横交错的变化时,应该能够想到使用Bridge模式,当然了,有时候虽然有两个方向上的变化,但是在某一个方向上的变化并不是很剧烈的时候,并不一定要使用Bridge模式。

效果及实现要点

  1.Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。

  2.所谓抽象和实现沿着各自维度的变化,即“子类化”它们,得到各个子类之后,便可以任意它们,从而获得不同平台上的不同型号。

  3.Bridge模式有时候类似于多继承方案,但是多继承方案往往违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多继承方案更好的解决方法。

  4.Bridge模式的应用一般在“两个非常强的变化维度”,有时候即使有两个变化的维度,但是某个方向的变化维度并不剧烈——换言之两个变化不会导致纵横交错的结果,并不一定要使用Bridge模式。

分享到:
评论

相关推荐

    (结构型模式)Bridge模式

    Bridge模式是一种设计模式,属于结构型模式之一,其主要目的是将抽象部分与实现部分分离,使得两者可以独立地进行变化。这种模式的核心思想是“抽象不应该依赖于具体,而应该依赖于抽象”。Bridge模式通过引入一个...

    【Java 设计模式-源码】Bridge 模式:在 Java 中解耦抽象与实现

    本文将介绍 Bridge 模式,它是一种结构型设计模式,用于解耦抽象与实现,增强软件系统的灵活性和可扩展性。 二、Bridge 设计模式的别名 Handle/Body 三、Bridge 设计模式的意图 Bridge 设计模式是 Java 中的一种结构...

    Docker基础-19-网络-bridge模式和docker0详解.rar

    本资料主要探讨了Docker的网络桥接模式(Bridge模式)以及其默认网络设备docker0,这对于理解和运用Docker服务至关重要。 首先,Docker的Bridge模式是Docker容器默认的网络模式。在这个模式下,每个容器都会被分配...

    Bridge模式代码

    Bridge模式是一种设计模式,主要目的是将抽象部分与实现部分解耦,使得它们可以独立地进行变化。在Java编程中,这种模式的应用可以帮助我们构建更灵活、可扩展的系统。Bridge模式通常由四个主要角色组成:抽象...

    设计模式之Bridge模式

    Bridge模式是对抽象和具体的进一步抽象。假设你有一个抽象类,一个具体类,现在需要将两者的变化都考虑进去,这就需要bridge。这是经典设计模式中唯一的可以同时处理抽象和具体同时变化的设计模式

    Docker为网络bridge模式指定容器ip的方法

    Docker在创建容器时有四种网络模式,bridge为默认不需要用--net去指定,其他...那Docker为网络bridge模式指定容器ip该如何实现呢?下面通过通过这篇文章一起看看吧,文中给出了详细的示例代码,有需要的可以参考借鉴。

    Java设计模式之桥模式(Bridge模式)介绍

    桥模式(Bridge模式)是一种设计模式,主要用于将抽象部分与实现部分解耦,使得它们能够独立地变化。在Java中,这种模式可以帮助我们构建更加灵活和可扩展的系统。以下是关于桥模式的详细解释: 首先,理解桥模式的...

    软件设计模式 bridge模式 代理模式等

    软件设计模式,共包含二十多种模式,做IT的必备知识呀!

    bridge结构设计模式

    在给定的文件列表中,我们可以看到涉及到Bridge模式的一些关键组件: 1. **Abstraction**(抽象类):这是桥接模式的核心抽象部分,定义了客户需要的接口,并持有一个指向实现部分的指针。在`abstraction.cpp`和`...

    设计模式探索系列之Bridge模式

    这就要使用Bridge模式。 意图 将抽象部分与实现部分分离,使它们都可以独立的变化。[GOF《设计模式》] 结构图图1Bridge模式结构图 生活中的例子 桥接模式将抽象部分与它的实现分离,使它们能够独立地变化。一个...

    23种设计模式的java实现—Bridge

    《Java实现的23种设计模式——Bridge模式详解》 设计模式是软件工程中的宝贵经验总结,它们为解决常见问题提供了可复用的解决方案。在众多设计模式中,Bridge模式是一种结构型模式,旨在将抽象部分与其实现部分分离...

    java设计模式之Bridge.docx

    Java设计模式中的Bridge模式是一种结构型设计模式,其主要目的是将抽象部分与其实现部分分离,使得两者可以独立地进行变化。在Bridge模式中,抽象类(或接口)不直接包含实现,而是通过一个引用(或接口)指向实现类...

    java设计模式之Bridge.pdf

    在上述例子中,Bridge模式被用来解决咖啡种类的问题。咖啡可以按照杯型(中杯、大杯)和是否加奶(加奶、不加奶)来分类。如果简单地使用继承,会形成一个四层的类结构,这将导致类的复杂性和扩展困难。Bridge模式...

    移动公司 吉比特 光猫 ZXHN G6611 路由模式router 改 桥接模式bridge 方法 详细教程

    我们需要选择Bridge模式,并启用DHCP使能。这将允许电脑连接光猫时可以自动获得IP地址。然后,我们需要访问光猫的配置页面,并勾选业务模式为INTERNET,vlan模式改为TAG,vlanid为200,802.1p优先级为6。 步骤3:...

    23种设计模式整理pdf

    Bridge 模式是一种结构型模式,用于提供一种分离对象的接口和实现的接口。Bridge 模式的优点是可以提供一种统一的分离对象的接口和实现的接口,减少了代码的耦合度。Bridge 模式的缺点是它可能会增加代码的复杂度。 ...

    ACE资料系列 - ACE中设计模式

    Bridge 模式是一种结构型设计模式,主要用于将抽象部分与实现部分分离,使得它们可以独立地变化。它可以使得抽象部分和实现部分之间的绑定变得松散,从而提高了系统的灵活性和可维护性。 2. ACE 框架中的 Bridge ...

Global site tag (gtag.js) - Google Analytics