前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java设计模式(6)桥接模式

Java设计模式(6)桥接模式

作者头像
Jensen_97
发布于 2024-04-18 05:03:20
发布于 2024-04-18 05:03:20
11800
代码可运行
举报
文章被收录于专栏:技术客栈技术客栈
运行总次数:0
代码可运行

前言

软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。是软件开发中广泛应用的一种编程方法,它可以帮助开发人员更快地编写出高效、可靠和可维护的代码。本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(5)适配器模式》文章中,我们介绍了适配器模式。本文是这个系列的第六篇章,我们将讲解一下桥接模式的实现方式、应用场景以及它的用途。

桥接模式

桥接模式是将抽象部分与其实现部分分离,使它们可以独立变化,而不会相互影响。在Java中,桥接模式通常用于处理类的多层继承结构,通过将抽象与实现分离,使得它们可以独立扩展。

使用场景

  1. 当一个类存在两个独立变化的维度时。
  2. 当希望避免在抽象和实现之间建立固定的绑定关系时。
  3. 当一个类需要在运行时动态选择实现时。

代码实现

这里以电子设备控制器来实现,在电子设备控制器中,桥接模式可以将抽象的设备控制接口与不同的设备(如电脑、手机等)的实现部分分离开来,使得控制器可以方便地控制不同的设备。

定义一个控制开关接口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 开关接口
 * @author Jensen
 * @date 2024-01-24
 * */
public interface Switch {
    void turnOn();
    void turnOff();
}

创建ComputerPhone实现类,分别实现开关接口

ComputerImpl:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 计算机实现类
 * @author Jensen
 * @date 2024-01-24
 * */
public class ComputerImpl implements Switch {
    @Override
    public void turnOn() {
        System.out.println("打开电脑");
    }

    @Override
    public void turnOff() {
        System.out.println("关闭电脑");
    }
}

Phone:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 手机实现类
 * @author Jensen
 * @date 2024-01-24
 * */
public class Phone implements Switch {
    @Override
    public void turnOn() {
        System.out.println("打开手机");
    }

    @Override
    public void turnOff() {
        System.out.println("关闭手机");
    }
}

创建RemoteControl抽象类

RemoteControl 定义了抽象部分的接口,并维护一个指向实现部分的引用。它通常包含对实现部分的委托方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 远程控制抽象类
 * @author Jensen
 * @date 2024-01-24
 * */
public abstract class RemoteControl {
    protected Switch aSwitch;

    public RemoteControl(Switch aSwitch) {
        this.aSwitch = aSwitch;
    }
    public abstract void On();
    public abstract void Off();
}

创建AdvancedRemoteControl扩展抽象类

AdvancedRemoteControl 拓展了RemoteControl 的抽象方法,可以在拓展处添加额外的功能

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 控制抽象类的扩展
 * @author Jensen
 * @date 2024-01-24
 * */
public class AdvancedRemoteControl extends RemoteControl{
    public AdvancedRemoteControl(Switch aSwitch) {
        super(aSwitch);
    }

    @Override
    public void On() {
        aSwitch.turnOn();
    }

    @Override
    public void Off() {
        aSwitch.turnOff();
    }
}

测试使用

分别对电脑和手机进行开机和关机的控制

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println("------------------------------桥接模式-----------------------------");
Switch computer1 = new ComputerImpl();
Switch phone = new Phone();
RemoteControl controlComputer = new AdvancedRemoteControl(computer1);
RemoteControl controlPhone = new AdvancedRemoteControl(phone);
controlComputer.On();
controlPhone.On();
controlComputer.Off();
controlPhone.Off();
image.png
image.png

结语

在一些流行的日志框架,如Log4jLogback,也使用了桥接模式。它们定义了一个抽象的日志记录接口,而具体的日志记录实现则是不同的日志记录器(如控制台日志记录器、文件日志记录器等)。

还有Java AWTSwing 中的图形界面组件也是使用了桥接模式。抽象部分是图形界面组件的功能,而实现部分则是对应操作系统平台上的实际图形界面组件的实现。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024/03/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java设计模式(7)装饰器模式
装饰器模式是一种结构型设计模式,用于动态地为对象添加额外的行为或责任,而无需修改其原始类。它允许将对象包装在一系列装饰器中,每个装饰器都添加一些特定的功能,从而实现对对象行为的灵活扩展。
Jensen_97
2024/04/18
1790
Java设计模式(7)装饰器模式
Java设计模式之桥接模式
将抽象和实现解耦,使得两者可以独立地变化。 是一种结构型设计模式。 桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责,它的主要特点是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。 桥接模式虽然是一个使用频率不高的模式,但是熟悉该模式对于理解面向对象的设计原则,包括开闭原则都很有帮助,有助于形成正确的设计思想和培养良好的设计风格。 现在对不同手机类型的不同品牌实现编程操作,比如开机、关机、打电话等。 public interfa
shaoshaossm
2022/12/27
2480
Java设计模式之桥接模式
常用设计模式——桥接模式
在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为 3 + 12 = 15,远小于36,却能实现与36支蜡笔同样的功能。如果增加一种新型号的画笔,并且也需要具有12种颜色,对应的蜡笔需增加12支,而毛笔只需增加一支。为什么会这样呢?通过分析我们可以得知:在蜡笔中,颜色和型号两个不同的变化维度(即两个不同的变化原因)融合在一起,无论是对颜色进行扩展还是对型号进行扩展都势必会影响另一个维度;但在毛笔中,颜色和型号实现了分离,增加新的颜色或者型号对另一方都没有任何影响。如果使用软件工程中的术语,我们可以认为在蜡笔中颜色和型号之间存在较强的耦合性,而毛笔很好地将二者解耦,使用起来非常灵活,扩展也更为方便。在软件开发中,我们也提供了一种设计模式来处理与画笔类似的具有多变化维度的情况,即本章将要介绍的桥接模式。
用户5325874
2020/01/16
4270
常用设计模式——桥接模式
Java设计模式之命令模式
命令模式是一种行为设计模式,它允许将请求封装成独立的对象,并将其参数化,从而使得可以将请求队列化、记录日志、撤销等操作。命令模式将请求的发送者和接收者解耦,使得它们可以独立变化,从而提高了系统的灵活性和可扩展性。在Java中,命令模式通常涉及命令接口、具体命令类、命令发送者和命令接收者。
刺槐儿
2024/02/02
2750
图解Java设计模式之桥接模式
现在对不同手机类型的不同品牌实现操作编程(比如 :开机、关机、上网、打电话等等),如图 :
海仔
2020/03/25
1.1K0
Go: 深入理解桥接模式的应用实践
桥接模式是一种结构型设计模式,它将一个大类或一系列紧密相关的类分离为抽象和实现两个层次结构,从而让它们可以独立地变化。通过组合的方式,桥接模式使得抽象和实现可以独立扩展,不同的抽象层可以自由组合不同的实现层。这种模式特别适用于那些实现方式会频繁变化的系统。
运维开发王义杰
2024/04/15
1420
Go: 深入理解桥接模式的应用实践
简说设计模式——桥接模式
既然面对上述传统解决方案是有弊端所在那我们如何去解决呢?现在就可以用到了本次的主题【桥接模式】
@派大星
2023/06/28
3450
简说设计模式——桥接模式
Java设计模式学习记录-桥接模式
这次介绍结构型设计模式中的第二种模式,桥接模式。 使用桥接模式的目的就是为了解耦,松散的耦合更利于扩展,但是会增加相应的代码量和设计难度。
纪莫
2018/07/24
3250
Java设计模式学习记录-桥接模式
05-02-设计模式 桥接模式
现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图:
彼岸舞
2022/05/28
1890
05-02-设计模式 桥接模式
23设计模式之 ---------桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。
默 语
2024/11/20
1020
23设计模式之 ---------桥接模式
【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
愚公搬代码
2022/12/01
2460
【愚公系列】2021年12月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
java设计模式之桥接模式,策略模式旗舰版,世界没有免费的午餐
桥接(Bridge Pattern)将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度,这种类型的设计模式属于结构型模式。
用户4361942
2019/05/24
9150
重学Java设计模式:实战桥接模式
Java是一门非常流行的编程语言,它可以帮助开发者轻松地实现复杂的系统。设计模式则是Java开发中不可缺少的一部分,可以帮助开发者在开发复杂系统时,降低耦合度,提高可维护性,同时也可以提高代码的复用性和灵活性。本篇文章就围绕桥接模式展开,介绍如何在多支付渠道和多支付模式的场景中使用桥接模式。
啵啵肠
2023/11/15
2070
Java设计模式(2)工厂模式
工厂模式是一种创建型设计模式,其主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦。通过使用工厂模式,客户端无需直接调用具体类的构造函数,而是通过调用工厂方法或工厂接口来获取所需的对象。这提高了系统的灵活性,使得更容易更换或扩展产品对象。
Jensen_97
2024/04/18
950
Java设计模式(2)工厂模式
【愚公系列】2023年11月 二十三种设计模式(七)-桥接模式(Bridge Pattern)
设计模式(Design Pattern)是软件开发领域的宝贵经验,是多人反复借鉴和广泛应用的代码设计指导。它们是一系列经过分类和归纳的代码组织方法,旨在实现可重用性、可维护性和可理解性。使用设计模式,我们能够编写高质量的代码,使其更易于他人理解,并提供了代码可靠性的保证。
愚公搬代码
2023/11/08
2470
【详解】JAVA设计模式桥接模式(Bridge)
在面向对象的设计中,设计模式是一种在特定情况下解决设计问题的通用可重用方案。本文将介绍一种结构型设计模式——桥接模式(Bridge Pattern)。桥接模式用于将抽象部分与实现部分分离,使它们可以独立变化。
大盘鸡拌面
2025/03/14
530
结构性设计模式-适配器模式+桥接模式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100723.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
2770
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
在软件设计和开发中,我们经常面临的一个挑战是如何在保持代码灵活性和可扩展性的同时,减少代码之间的耦合度。设计模式就是在这样的背景下应运而生的,它们为开发者提供了一种通用的、经过验证的解决方案来应对常见的设计问题。今天,我们要深入探讨的是Java中的桥接设计模式(Bridge Design Pattern)。
公众号:码到三十五
2024/04/10
2060
Java设计模式:桥接模式实现灵活组合,超越单一继承的设计之道(十)
23种设计模式详解与示例代码(详解附DEMO)
本文将探讨设计模式在Java中的应用与实现。设计模式是一套被广泛接受的解决常见软件设计问题的经典方法。在Java编程中,设计模式是提高代码可读性、可维护性和可扩展性的关键。本文将详细介绍Java中常用的几种设计模式,包括工厂模式、单例模式、观察者模式和装饰器模式,并提供具体的代码示例和解释,帮助读者深入理解和学习这些模式的实现方式。
默 语
2024/11/20
8480
Java设计模式(九)桥接模式
我是在脑壳疼的情况下(今天的工作的量很大,内容很丰富,我很开心,以至于脑壳疼)写下这篇关于桥接模式的文章,不正之处请多指教。
每天学Java
2020/06/01
7260
Java设计模式(九)桥接模式
推荐阅读
相关推荐
Java设计模式(7)装饰器模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验