12-桥接模式(Bridge)

这篇具有很好参考价值的文章主要介绍了12-桥接模式(Bridge)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

意图

将抽象部分与它的实现部分分离,使他们可以独立地变化

个人理解

一句话概括就是只要是在抽象类中聚合了某个接口或者抽象类,就是使用了桥接模式。
抽象类A中聚合了抽象类B(或者接口B),A的子类的方法中在相同的场景下调用了B的子类的方法。

动机

该小节摘抄于GOF的《设计模式》
当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同的方式实现。但是此方法有时不够灵活。继承机制将抽象部分与他的实现部分固定在一起,,使得难以对抽象部分和实现部分独立地进行修改、扩充和复用。
假设一个场景:在一个用户界面工具箱中有一个可移植的Window抽象部分的实现。这一抽象部分应该允许用户开发一些在X Window 和IBM的Presentation Manager(PM)系统中都可以使用的应用程序。运用继承机制,我们可以定义一个Window抽象类和它的两个子类Xwindow与PMWindow,由它们分别实现不同系统平台上的Window界面。但是继承机制有两个不足之处:
1)扩展Window抽象使之不适用于不同种类的窗口或新的系统平台很不方便。假设有Window的一个子类IconWindow,它专门将Window抽象用于图标处理。为了使IconWindow支持两个系统平台,我们必须实现连个新类XIconWindow和PMIconWindow,更糟糕的是,我们不得不为每一种类型的窗口都定义两个类。而为了支持第三个系统平台,我们还必须为每一种窗口定义一个新的Window子类,如下图所示。
12-桥接模式(Bridge),桥接模式,java,设计模式
2)继承机制使得客户代码与平台相关。每当用户创建一个窗口时,必须要实例化一个具体的类,这个类有特定的实现部分。例如,创建XWindow对象会将Window抽象与XWindow的实现部分绑定起来,这使得客户程序依赖于X Window的实现部分。这将使得很难将客户代码移植到其他平台上去。
客户在创建窗口是应该不涉及具体实现部分,仅仅是窗口的实现部分依赖于应用运行的平台。这样客户代码在创建窗口时就不应该涉及特定的平台。
Bridge模式解决以上问题的方法是,将Window抽象和它的实现部分分别放在独立地类层次结构中。其中一个类层次接口针对窗口接口(Window、IconWindow、TransientWindow),另外一个独立地类层次结构针对平台相关的窗口实现部分,这个类层次结构的根类为WindowImp。例如XWindowImp子类中提供了一个基于X Window系统的实现,如下图所示:
12-桥接模式(Bridge),桥接模式,java,设计模式

使用场景

  1. 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
  2. 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
  3. 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
    注意事项:对于两个独立变化的维度,使用桥接模式再适合不过了。

示例讲解

参考尚硅谷的教程:https://www.bilibili.com/video/BV1G4411c7N4?p=68&vd_source=3141b9fdb12c5901aa70919c50575543
12-桥接模式(Bridge),桥接模式,java,设计模式文章来源地址https://www.toymoban.com/news/detail-803254.html

实际应用场景

  • 在JDBC的源码 Driver类中有体现:https://www.bilibili.com/video/BV1G4411c7N4?p=69&vd_source=3141b9fdb12c5901aa70919c50575543

到了这里,关于12-桥接模式(Bridge)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 12-桥接模式(Bridge)

    将抽象部分与它的实现部分分离,使他们可以独立地变化 一句话概括就是只要是在抽象类中聚合了某个接口或者抽象类,就是使用了桥接模式。 抽象类A中聚合了抽象类B(或者接口B),A的子类的方法中在相同的场景下调用了B的子类的方法。 该小节摘抄于GOF的《设计模式》

    2024年01月19日
    浏览(41)
  • Java设计模式-桥接模式

    桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。 这个概念听着那是相当拗口了,其实通过例子解释后,就能很好的理解了。 下面先看一个例子,这个例子表现了手机与手机软件之间的关系 2.1HandsetSoft类 这个类是手机软件的抽象类 2.2HandSetGame类 这个是

    2024年02月16日
    浏览(43)
  • Java设计模式之 -- 桥接模式

    桥接模式是一种结构型设计模式,也被称为“Handle/Body”。这种设计模式主要用于将抽象部分与它的实现部分分离,使它们可以独立地变化。这种方式有助于减少系统中的耦合性,增加了扩展性。 桥接模式主要解决的是类的维度扩展问题。在一个多维度变化的类中,使用继承

    2024年02月15日
    浏览(41)
  • Java 设计模式之桥接模式

    桥接模式是一种结构设计模式,它的目标是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过将继承关系改为组合关系来实现解耦。 在Java中,桥接模式的实现通常涉及两个层次结构:抽象类和具体实现类。抽象类表示抽象部分,而具体实现类表示实现部分

    2024年02月09日
    浏览(44)
  • Java与设计模式(8):桥接模式

    桥接模式(Bridge Pattern)是一种软件设计模式,它用于将抽象部分与实现部分分离,使它们可以独立地变化。该模式通过将抽象类与实现类之间建立一个桥接(Bridge)来实现解耦,使得抽象部分和实现部分可以独立地进行扩展。 在桥接模式中,抽象部分由一个抽象类或接口表

    2024年02月11日
    浏览(43)
  • 【Java 设计模式】结构型之桥接模式

    桥接模式(Bridge Pattern)是一种结构型设计模式, 它将抽象部分与实现部分分离,使它们可以独立变化,从而降低它们之间的耦合 。桥接模式通过将抽象部分和实现部分分离,使得它们可以独立地变化,同时在它们之间建立一个桥梁。在本文中,我们将介绍 Java 中桥接模式的

    2024年01月19日
    浏览(46)
  • Java设计模式之结构型-桥接模式(UML类图+案例分析)

    目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 4.1、支付方式 4.2、支付渠道  五、总结 桥接模式(Bridge Pattern)是一种结构型设计模式,其主要目的是“将抽象部分与实现部分分离,使它们都可以独立地变化”。 桥接模式的核心思想是把抽象(abstraction)与实现

    2024年02月13日
    浏览(47)
  • 【Java面试题】设计模式之七种结构性模式——代理模式、适配器模式、桥接模式、装饰模式、外观模式、享元模式、组合模式

    目录 一、代理模式 二、适配器模式 三、桥接模式 四、装饰模式 五、外观模式 六、享元模式 七、组合模式 概念: 代理模式是为其他对象提供一种以代理控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对

    2023年04月09日
    浏览(52)
  • Java 与设计模式(12):享元模式

    享元模式是一种结构型设计模式,旨在有效地共享对象以减少内存使用和提高性能。该模式的核心思想是通过共享尽可能多的相似对象来减少内存占用。它将对象分为可共享的内部状态和不可共享的外部状态。内部状态是对象的固有属性,可以在多个对象之间共享,而外部状

    2024年02月12日
    浏览(38)
  • 设计模式之Bridge模式的C++实现

    目录 1、Bridge模式的提出 2、Bridge模式的定义 3、Bridge模式总结 4、需求描述 5、多继承方式实现 6、使用Bridge设计模式实现         在软件功能模块设计中,如果类的实现功能划分不清晰,使得继承得到的子类往往是随着需求的变化,子类急剧膨胀,充斥重复代码。将类要实现

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包