设计模式——桥接模式详解

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

🚀桥接模式(抽象与实现分离)

1.1⭐桥接模式的定义

维基百科:桥接模式是软件设计模式中最复杂的模式之一,它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。

百度百科:桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(interface)模式。

1.2☘️桥接模式的结构

桥接(Bridge)模式包含以下主要角色:

  • 抽象化(Abstraction)角色 :定义抽象类,并包含一个对实现化对象的引用。
  • 扩展抽象化(Refined Abstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  • 实现化(Implementor)角色 :定义实现化角色的接口,供扩展抽象化角色调用。
  • 具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

1.3🚀桥接模式简单案例及代码演示

**举个🌰:**假设有一个歌手,他的名字叫磊磊。磊磊会用嘴唱歌,磊磊会边弹吉他边唱歌。但是磊磊是个十分好学的孩子不满足于现状,于是他报了个机构叫白马教育,并且成为了Good Singer班中的一员。在进行了长达两年半的学习之后,磊磊凭借着过人的天赋学会了边弹钢琴边唱歌。

如何实现???

a.传统思路:

定义一个演员类,将用嘴唱歌,用吉他唱歌,用钢琴唱歌写到这个类中。

缺点很明显,如果又来了一个人怎么办,如果又学会的一个乐器怎么办,显然不易扩展。

b.桥接模式思路:

在抽象类中

1.将需要桥接的接口拿到父类里

2.直接将接口属性丢到构造方法里,同时要在子类构造该方法

3.调用桥接属性开始“表演”

代码演示:

1.定义抽象演员类(Perfomer)

package com.qf.bridge;

/**
 * @author ###
 */
public abstract class Perfomer{
    //桥接属性
    protected IplayType playType;
    //构造表演方法
    public Perfomer(IplayType playType){
        this.playType=playType;

    }
    //表演
    abstract protected void perform();
}

2.定义磊磊类,继承抽象演员类

package com.qf.bridge;

public class Leilei extends Perfomer{
    //构造方法传递需要的乐器表演方式
    public Leilei(IplayType playType) {
        super(playType);
    }

    @Override
    protected void perform() {
        playType.play("磊磊");
    }
}

3.设计乐器表演接口,包含一个play方法

package com.qf.bridge;

//表演方式
public interface IplayType{
    void play(String name);
}

4.定义吉他表演类遵从乐器表演接口

package com.qf.bridge;

public class Guitar implements IplayType {
    @Override
    public void play(String name) {
        System.out.println(name+"用吉他唱歌了");
    }
}

5.定义嘴巴类遵从乐器表演类

package com.qf.bridge;

public class Mouth implements IplayType{
    @Override
    public void play(String name) {
        System.out.println(name+"用嘴唱歌了");
    }
}

6.Test

package com.qf.bridge;

public class Demo1 {
    public static void main(String[] args) {
        Perfomer mouth = new Leilei(new Mouth());
        mouth.perform();

        Perfomer guitar = new Leilei(new Guitar());
        guitar.perform();

    }
}

结果展示:

桥接模式,笔记,设计模式,桥接模式,java

1.4🚀桥接模式的UML图

稍作解释:

1.+表示public,-表示private,#表示protected

2.聚合关系可以用【带空心菱形的实线】来表示,菱形指向整体。(如:teacher是university的一个部分)

3.继承关系用【带空心三角箭头的实线】来表示,箭头从子类指向父类。

虚假的UML图:

桥接模式,笔记,设计模式,桥接模式,java

真正的UML图:

桥接模式,笔记,设计模式,桥接模式,java

桥接模式,笔记,设计模式,桥接模式,java

1.5🌟桥接模式的应用场景

跨平台视频播放器,可以在不同操作系统平台(如Windows、Mac、Linux等)上播放多种格式的视频文件,常见的视频格式包括RMVB、AVI、WMV等

1.6☘️桥接模式的优缺点

优点:

  1. 分离抽象接口及其实现部分。使得抽象和实现可以沿着各自的维度来变化,也就是说抽象和实现不再在同一个继承层次结构中,而是“子类化”它们,使它们各自都具有自己的子类,以便任何组合子类,从而获得多维度组合对象。

  2. 在很多情况下,桥接模式可以取代多层继承方案,多层继承方案违背了“单一职责原则”,复用性较差,且类的个数非常多,桥接模式是比多层继承方案更好的解决方法,它极大减少了子类的个数。

    多继承是指一个类可以同时从多个父类继承属性和方法。这种继承方式可以让子类同时拥有多个父类的特征,但也可能带来一些问题,比如构造函数的执行顺序和类中同名变量冲突等

  3. 桥接模式提高了系统的可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统,符合“开闭原则”。

缺点:

  1. 桥接模式的使用会增加系统的理解与设计难度,由于关联关系建立在抽象层,要求开发者一开始就针对抽象层进行设计与编程。
  2. 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性,如何正确识别两个独立维度也需要一定的经验积累。

1.7🚀桥接模式与其他模式的区别

1.桥接模式与策略模式的区别

桥接模式,笔记,设计模式,桥接模式,java

桥接模式,笔记,设计模式,桥接模式,java

1.桥接模式中不仅Implementor具有变化 ,而且Abstraction也可以发生变化,而且两者的变化是完全独立的

2.策略模式仅仅通过Abstraction与 Implementor之间的关系联系起来。而在策略模式中,并不考虑Context的变化,只有算法的可替代性。

3.策略模式的目的是封装一系列的算法,使得这些算法可以相互替换;而桥接模式的目的是分离抽象和实现部分,使得它们可以独立的变化。

2.前面的路以后再来探索吧……………………….文章来源地址https://www.toymoban.com/news/detail-736197.html

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

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

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

相关文章

  • Java设计模式-桥接模式

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

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

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

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

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

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

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

    2024年02月11日
    浏览(42)
  • 【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)
  • 设计模式:桥接模式

    桥接模式(Bridge Pattern):旨在将抽象部分和实现部分解耦,使它们可以独立地变化。这种模式通过将抽象和实现分离,使它们可以独立地进行扩展和修改,而不会相互影响。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。 假如需要使用大

    2024年01月25日
    浏览(55)
  • 设计模式 07 桥接模式

    桥接模式(Bridge Pattern)属于 结构型 模式 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为 柄体 (Handle and Body)模式或 接口 (Interface)模式。 比如需要创建电脑对象,市面上的电脑非常多, 品牌 有华为、苹果、联

    2024年02月11日
    浏览(58)
  • 设计模式——桥接模式

    引用 桥 我们大家都熟悉,顾名思义就是用来将河的两岸联系起来的。而此处的桥是用来将两个独立的结构联系起来,而这两个被联系起来的结构可以独立的变化,所有其他的理解只要建立在这个层面上就会比较容易。 基本介绍 桥接模式(Bridge)是指将实现与抽象放在两个不

    2024年02月12日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包