设计模式-07桥接模式

【PHP设计模式07】桥接模式(桥梁模式) 桥接模式,又称桥梁模式,或是柄体模式或接口模式。可将抽象部分与它的具体实现部分分离,使它们都可以独立地变化组合。桥接模式的主要目的是通过组合的方式建立两个类之间的联系,而不是继承,是比多重继承更好的替代方案,核心在于用组合/聚合的方式共享一些能用的方法,解耦抽象和实现。 阅读详情

桥接模式

介绍:将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变。

桥接模式基于类的最小设计原则,通过使用封装、聚合、继承等行为让不同的类承担不同的职责,他的主要特点就是把抽象与行为实现分离开来,从而可以保持各部分的独立性以及应对他们功能的扩展。
在这里插入图片描述
案例:打印小米、vivo品牌,折叠和翻盖手机的组合

public interface Brand {

    void open();
    void close();
    void call();

}

public class Xiaomi implements Brand {
    @Override
    public void open() {
        System.out.println("小米手机开机");
    }

    @Override
    public void close() {
        System.out.println("小米手机关机");
    }

    @Override
    public void call() {
        System.out.println("小米手机打电话");
    }
}

public class Vivo implements Brand{
    @Override
    public void open() {
        System.out.println("Vivo手机开机");
    }

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

    @Override
    public void call() {
        System.out.println("Vivo手机打电话");
    }
}

/**
 * 抽象部分
 */
public abstract class Phone {
    private Brand brand;

    Phone(Brand brand) {
        this.brand = brand;
    }

    protected void open(){
        brand.open();
    }

    protected void close(){
        brand.close();
    }

    protected void call(){
        brand.call();
    }

}

public class FoldedPhone extends Phone {

    FoldedPhone(Brand brand) {
        super(brand);
    }

    @Override
    public void open() {
        super.open();
        System.out.println("折叠手机");
    }

    @Override
    public void close() {
        super.close();
        System.out.println("折叠手机");
    }

    @Override
    public void call() {
        super.call();
        System.out.println("折叠手机");
    }
}

public class UpRightPhone extends Phone {

    UpRightPhone(Brand brand) {
        super(brand);
    }

    @Override
    protected void open() {
        super.open();
        System.out.println("翻盖手机");
    }

    @Override
    protected void close() {
        super.close();
        System.out.println("翻盖手机");
    }

    @Override
    protected void call() {
        super.call();
        System.out.println("翻盖手机");
    }
}

public class Client {

    public static void main(String[] args) {
        Xiaomi xiaomi = new Xiaomi();
        Vivo vivo = new Vivo();
        Phone foldedPhone = new FoldedPhone(xiaomi);
        Phone foldedPhone1 = new FoldedPhone(vivo);
        //折叠式小米手机
        foldedPhone.open();
        foldedPhone.call();
        foldedPhone.close();

        //折叠式Vivo手机
        foldedPhone1.open();
        foldedPhone1.call();
        foldedPhone1.close();
    }
}

源码使用:jdbc的driver接口,driver就是一个接口,下面可以有MySQL的Driver和oracle的Driver,这些可以看做是实现接口。
在这里插入图片描述
桥接模式的注意事项和细节:

  • 实现了抽象和实现部分的分离,从而极大的提高了系统的灵活性,让抽象部分和实现部分独立开来,这样有助于系统进行分层次设计,从而产生更好的结构化系统。
  • 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其他的部分有具体业务来完成。
  • 桥接模式替代多层继承方案,可以减少子类个数,降低系统的管理和维护成本。
  • 桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系型建立在抽象层,要求开发者针对抽象进行设计和编程
  • 桥接模式要求正确识别出系统中的两个独立变化的维度,因此其使用范围有一点的局限性,即需要有这样的应用场景。

应用场景:

  • 对于那些不希望使用继承或因为层次关系导致系统类的个数急剧增加的系统,桥接模式尤为适用。
深入解析安卓/Linux固件:从DTB到DTS的反编译实战 本文详细介绍了如何从安卓/Linux设备固件中提取并反编译DTB文件,将其转换为可读的DTS源码。通过实战步骤,包括拆解boot.img、处理resource.img以及使用dtc工具,帮助开发者深入理解设备硬件配置,为固件定制、驱动调试和系统移植提供关键支持。 阅读详情

相关推荐

参考线平滑-FemPosDeviation-SQP

使用SQP(顺序二次规划)对离散点进行平滑

mpt0816的博客 2438

设计模式-07桥接模式 (Bridge Pattern) 源码实例大全

桥接模式是一种结构型设计模式,将抽象与实现解耦,使二者可以独立变化。本文以Spring JDBC为例展示了桥接模式的应用:JdbcAccessor作为抽象部分,定义了数据库访问的通用接口;JdbcTemplate作为具体实现,通过DataSource接口桥接不同的数据库驱动实现。这种设计使得数据库访问逻辑与具体数据库实现分离,可以灵活切换不同的数据库驱动而不影响业务代码。

d3y1`5 81_09 921

解决TextMeshPro在AB打包中的字体冗余问题:源码修改全记录

本文详细介绍了如何解决TextMeshPro在AB打包中的字体冗余问题,通过源码改造和工程实践优化Unity项目的性能。内容包括资源加载路径重构、AB打包策略优化及运行时加载方案,有效减少包体体积和构建时间,提升内存效率。

weixin_42558257的博客 184

java 23 种设计模式-07-java 桥接模式(Bridge Pattern)

目录 目录 桥接模式 实际案例 定义 测试 实现方式 UML & Code UML Code 系列导航 桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式, 它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的...

3万+

光伏逆变器在环测试解决方案

光伏行业是利用太阳能光辐射将其转化为可用电能的行业。近年来,为应对气候变化和能源安全等挑战,全球对清洁能源的需求不断增长。太阳能作为最具潜力和可再生的能源之一,被视为替代传统化石能源的重要选择,光伏行业因此得到了迅猛发展,并在全球范围内得到了广泛应用。许多国家和地区都将光伏技术作为关键的能源发展方向。尤其是在新兴和发展中国家,光伏发电具有巨大的增长潜力,将成为未来市场竞争的重点。随着规模化生产的推进,光伏组件的制造成本不断降低。

shiwei0813的博客 959

YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测

在YOLO26中如何使用:iAFF加入Neck替代Concat;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 267

【设计模式07】桥接模式

【设计模式07】桥接模式

专注后端技术架构,AI技术分享 961

【CANdelaStudio编辑CDD】-1.2-给$10服务SessionControl创建一个新Session会话并修改Session state machine会话状态机(UDS诊断)

前一篇:【UDS诊断描述文件CDD】-1.1-ISO_14229中$10服务理论部分https://blog.youkuaiyun.com/qfmzhu/article/details/120375515案例背景: 在CDD中如何给$10服务创建一个新的Session会话; 在CDD中如何给$10服务修改Session state machine会话状态机。 目录 1 查看$10服务中已有的Session会话​ 2 查看$10服务中已有的Session state machine会话状态机 3 在$10...

「汽车电子助手」的博客 6070

07 设计模式 桥接模式

桥接模式 桥接模式,指的就是像桥一样将两个类关联起来,将抽象与实现分离,使得每个部分可以独立变化。 采用桥接设计模式之前如上图所示 采用桥接模式,将类分为品牌,品牌下分为苹果、联想等,电脑下分为台式机、笔记本和平板电脑等 采用桥接模式之后就可以按照需要,自己进行组装 代码如下: 品牌接口 public interface Brand { public void info();...

shimeath_rafael的博客 127

手把手教你学Simulink--基于新能源与储能系统的场景实例:压缩空气储能(CAES)系统热力学建模

本文介绍了使用Simulink进行压缩空气储能(CAES)系统热力学建模的详细步骤。系统模型包含压缩机、储气装置、膨胀机、热交换器和控制器等核心模块,通过MATLAB函数计算各部件参数,并设置仿真条件。文章详细说明了从模型创建到性能评估的完整流程,包括压缩/膨胀过程的能量转换、温度压力变化等关键指标分析。该建模方法可验证设计方案的有效性,并为系统优化提供参考,适用于新能源与储能领域的研究与应用。

MHD0815的博客 9168

【从零开始vnpy量化投资】十一. 实盘接入测试与正式实盘

本篇主要讲解如何使用vnpy进行实盘交易,由于上一节我们已经学习了模拟盘运行,如果一切顺利的话,只需要通过穿透测试,就可以正式部署实盘了。

魔落的博客 4229

设计模式总结07--桥接模式

一、什么是桥接模式 桥接模式,又叫桥梁模式,顾名思义,就是有座“桥”,那这座桥是什么呢?就是一条聚合线(下方UML图),比如我们下面会举的例子,手机有手机品牌和手机游戏等等,每个手机品牌都有多款游戏,那是不是二者之间就是聚合关系了,这是合成/聚合复用原则的体现,当我们发现类有多层继承时就可以考虑使用桥接模式,用聚合代替继承。 ...

zhouyuming_hbxt的博客 654

2.STM32F407ZGT6 学习笔记-移植 FreeRTOS

1. 在工程下建议FreeRTOS文件夹 2. 在FreeRTOS文件夹下建立 src 和 port 文件夹 (src用于存放freertos源码,port文件夹存放内存和接口相关的文件) 3. 复制freertos/source文件夹下所有c文件复制到刚刚建立的freertos/src目录下 4. 复制FreeRTOSv9.0.0\FreeRTOS\Source\portablex下的MemMang和RVDS文件夹复制到刚刚建立的port问价夹下 5. 将FreeRTOSv9.0.0\FreeRTOS

Car12 1233

设计模式 07 桥接模式

桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。比如需要创建电脑对象,市面上的电脑非常多,品牌有华为、苹果、联想等等,类型有台式、笔记本、平板等等。如果给每个品牌的每个类型的电脑都创建一个对象,那是十分繁琐的,而且非常不方便扩展。试想如果增加了一个品牌或者类型,那就需要增加大量的对象,这无疑是笨重和低效的。这时我们会想,如果给品牌和类型。

天河有尽后为涯,星海无边前作岸。 1554

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C#设计模式07-桥接模式

桥接模式,从字面意思上说就是用一条桥梁来链接两个不同的事物。专业一点讲,就是当一个类存在独立变化的两个维度的时候,可以将这两个维度分离出,设计成独立的继承结构,使他们可以独立扩展。桥接模式用一种巧妙的方式(用抽象关联代替传统的多重继承)解决了多重继承存在的问题。 假如说现在要开发一个图像浏览系统,要求可以显示JPG,PNG,GIF等格式的图像,同时系统要跨平台,要求能在Windows,Unix,

曹瑞鹏的博客(专注于.NET开发,Unity开发) 1276

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

设计模式——桥接模式07

桥接模式

qq_45178641的博客 643

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

golang设计模式-07桥接模式

golang设计模式-07桥接模式 参考文献 设计模式1 设计模式2

weixin_38805083的博客 132

【设计模式07】 桥接模式

桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 实现 我们有一个作为桥接实现的 DrawAPI 接口和实现了 DrawAPI 接口的实体类 RedCircle、GreenCircle。Shape 是一个抽象类,将使用 DrawAPI 的对象。BridgePatternDemo

piano_diano的博客 207

后浪 来学习吧!设计模式【07】桥接模式

设计模式【07】桥接模式 定义 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 主要解决什么 在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 结构 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。 扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。 实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调用。 具体实现化(Conc

qq_39555852的博客 199

设计模式07:桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以使用相同的抽象类方法但是不同的桥接实现类,来画

cj2580的博客 456

Java设计模式[07]-桥接模式

基本介绍 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。 是一种结构型设计模式。 Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 原理类图说明 Client类:桥接模式的调用者。 抽象类(Abstraction) :维护了 Implementor .

JensenPWLee的博客 175

Java设计模式学习07——桥接模式

一、场景商城系统中常见的商品分类,以电脑为例,如何良好的处理商品分类销售的问题? 我们可以用多层继承实现下图的关系: 实现代码如下:public interface Computer { void sale(); }class Desktop implements Computer{ @Override public void sale() { System.o

小小本科生成长之路 1534

07_23 种设计模式之《桥接模式》

桥接模式实现方式:IPayMode类是实现类,定义基本操作 security(),用于设置验证方式,其子类。ConcreteImplementor:真正实现 Implementor 接口的对象(具体实现类)。当一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性时。RefinedAbstraction:扩展抽象部分的接口。桥接模式定义:将抽象部分与它的实现部分分离,使它们都可以。Implementor:定义实现部分的接口。Abstraction:抽象部分的接口。提供实现,它位于桥接模式的抽象层。

2302_79752447的博客 720

07 设计模式-结构型模式-桥接模式

桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类,这两种类型的类可被结构化改变而互不影响。 桥接模式的目的是将抽象与实现分离,使它们可以独立地变化,该模式通过将一个对象的抽象部分与它的实现部分分离,使它们可以独立地改变。它通过组合的方式,而不是继承的方式,将抽象和实现的部分连接起来。

wyh106115的博客 1239

设计模式:07-桥接模式

一。适用场景:某类事物的属性在两个及以上的维度发生变化。 二。示例。比如跑车,有品牌的不同,有颜色的不同。可以定义一个跑车接口, package cn.edu.tju.app; public interface SportsCar { //描述跑车的品牌信息 void describe(); } 然后定义连个实现类,来分别表示不同品牌的跑车, package cn.edu.tju.app; public class BenzSportsCar implements SportsCar

amadeus_liu2的博客 547

新谈设计模式 Chapter 07 — 桥接模式 Bridge

你家有一个万能遥控器,可以控制索尼电视、三星电视、LG 电视。你换了一台新电视,遥控器还能用;你换了一个新遥控器,电视还能用。2 种遥控器 × 3 种电视 = 6 个类。如果维度再多,指数级爆炸。没有桥接:M 种形状 × N 种渲染器 = M×N 个类。有了桥接:M 种形状 + N 种渲染器 = M+N 个类。Bridge 也用组合,Strategy 也用组合。:把两个独立的维度(形状、颜色)揉进了同一个继承体系。,编译期绑定,运行时零开销。如果不用桥接,你会遇到。

腾TO的技术博客 168
上一篇: 设计模式-06适配器模式
下一篇: 设计模式-08装饰者模式
胖柯G
博客等级 码龄10年 453粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值