GoF设计模式(十) - 桥接模式

变压器耦合放大器(低频应用+高频应用) 阅读详情

前言

桥接(Bridge)是将抽象部分与它的实现部分分离,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 

 

场景

以汽车销售为例 ,会有汽车品牌和汽车类型,如何实现分类销售 ? 我们可以用多继承结构的方式来实现。

按品牌分类实现结构图:

这样实现的话,会存在扩展性问题并且违反了单一职责原则,当我们新添加一个品牌(长安),我们是不是又要在该品牌下增加两种汽车类型呢?假如我们在增加一个汽车类型(混动车),我们就要在各汽车品牌下增加该汽车类型,继续加。继续加……每次增加都会增加若干个类, 使用继承的方式,不管新增一个类型还是新增一个品牌,都会牵扯出另外一个维度的变化。

 

如何解决

 针对上述场景可以通过合成/聚合复用原则来处理,合成(Composition,也有翻译成组合)和聚合(Aggregation)都是关联的特殊种类。

  • 聚合表示一种弱的‘拥有’关系,体现的是A对象可以 包含B对象,但B对象不是A对象的一部分;
  • 合成则是一种强的‘拥 有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。

我们可以将汽车品牌和汽车类型分别进行抽象化,让不同品牌和类型分别继承于它们,这样要增加新的品牌或新的类型都不用影响其他类了。

结构图如下:

模式实现

核心要点 : 处理多层继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。

结构图:

汽车类型抽象类及实现类

public abstract class Car {
    public abstract void saleImpl(String brand);
}
public class fuelCar extends Car{

    @Override
    public void saleImpl(String brand) {
        System.out.println(brand + "燃油车");
    }
}
public class ElectricCar extends Car{

    @Override
    public void saleImpl(String brand) {
         System.out.println(brand + "电动车");
    }
}

汽车品牌抽象类及实现类

public abstract class Brand {
    protected Car car;

    public void setCar(Car car){
        this.car = car;
    }

    public abstract void sale();
}
public class AuspiciousBrand extends Brand{

    @Override
    public void sale() {
        car.saleImpl("吉利");
    }
}
public class GreatWallBrand extends Brand{

    @Override
    public void sale() {
        car.saleImpl("长城");
    }
}

测试类

@SpringBootTest
class BridgingDemoApplicationTests {

	@Test
	void contextLoads() {
		Brand brand  = new AuspiciousBrand();
		brand.setCar(new ElectricCar());
		brand.sale();
	}

}

运行结果

 

 

模式优缺点

优点 

  • 分离抽象接口及其实现部分
  • 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。
  • 实现细节对客户透明,隐藏实现细节。

缺点

  • 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。
  • 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。

 

源码

https://download.youkuaiyun.com/download/javanbme/19124805

 

微信小程序 - 解决请求报错 request:fail errcode:-201 cronet_error_code:-201 error_msg:net::ERR_CERT_DATE_INVALID 微信小程序报错“request:fail errcode:-201 cronet_error_code:-201 error_msg:net::ERR_CERT_DATE_INVALID“,微信小程序请求报错,微信小程序errcode:-201,服务器报错,无法调用接口,微信小程序真机https请求失败,微信小程序wx.request接口报错,小程序真机调试运行接口都报错了,真机测试下网络请求都不行了且报错,证书没问题依旧报错,检查HTTPS证书,ssl证书,使用浏览器测试访问证书是正常的,不是证书问题,请 阅读详情

相关推荐

城市规划师必备:ArcMap里用这个免费工具,5步完成建筑群通风廊道分析

本文介绍了城市规划中利用ArcMap进行建筑群通风廊道分析的高效方法,重点讲解了迎风面投影指数(FAI)的应用。通过5个步骤,从数据准备到规划应用,帮助规划师快速评估城市通风潜力,优化建筑布局,提升城市风环境质量。

weixin_26800111的博客 412

【Go实现】实践GoF的23种设计模式:桥接模式

桥接模式将抽象部分和实现部分进行解耦,使得它们能够各自往独立的方向变化

ruanrunxue的博客 1164

ESP32天线阵列实现Wi-Fi空间成像与无直视定位

Wi-Fi信道状态信息(CSI)是OFDM系统中表征多径传播特性的基础物理层参数,其复数值包含幅度与相位,可反映无线环境的空间特征。基于CSI的射频感知技术,通过提取子载波级信道响应,结合阵列信号处理,实现到达角(AoA)估计与深度映射,本质是将通信链路重构为空间域传感器。该技术无需专用雷达硬件,具备低成本、被动式、隐私友好等工程优势,在室内定位、行为识别、仓储导航等场景具有广泛落地价值。本文聚焦ESP32平台,详解多芯片相位同步、CSI零拷贝采集、嵌入式MUSIC算法及信道图谱轻量化部署等关键实现。

weixin_30632267的博客 236

GoF设计模式-桥接模式

桥接模式(重要): 又称为接口模式,将抽象化与实现化分离,使它们可以独立地变化。如果系统中存在两个独立变化的维度(原因),那么可以使用关联关系将它们解耦,使它们可以独立地扩展,用关联关系代替多层继承,减少了系统中类的个数,使系统更加灵活,并易于扩展 桥接模式包含的角色:抽象类,抽象类的子类,实现类接口,具体实现类 桥接模式的适用场景: ...

weixin_42273847的博客 270

【G4基础08】GPS-2-Macro Commands宏命令

GPS-2

adelall的博客 3738

【win11 cuda12.0安装tensorflow-gpu】

win11 cuda 12.0 安装 tensorflow-gpu

weixin_36299320的博客 3009

GoF 23种经典的设计模式——桥接模式

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

Aft3rGl0w的博客 557

避坑指南:Allegro 17.2更新封装时遇到的5个典型问题及解决方案(含Symbol报错处理)

本文深度解析Allegro 17.2封装更新过程中的核心机制与常见陷阱。针对“Update Symbols”功能失效、焊盘不匹配、DRC报错、图形层叠错误等5大典型问题,提供从原理分析到实战解决方案的完整指南,帮助用户实现从“更新失败”到“丝滑替换”的平稳过渡。

tgb34567890的博客 1039

GOF之桥接模式(结构型模式) ✨ 每日积累

桥接模式是什么 ​ 桥接模式是结构型模式,当系统中的某个类中存在两个或者以上的维度的变化,可以将每个维度分离出来,使得每个维度都可以进行独立扩展,符合单一职责的原则。将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式用一种巧妙的方式处理多层继承存在的问题,用抽象关联取代了传统的多层继承,将类之间的静态继承关系转换为动态的对象组合关系(看完下文内容自会理解),使得系统更加灵活,并易于扩展,同时有效控制了系统中类的个数。 桥接模式使用场景 1、如果一个系统需要在构件的抽象化角色和具体化角色之间增

龙飞的博客 6961

【Godot】实现对话系统

在 Godot 中实现对话系统(Dialogue System)是游戏开发中的常见需求。Godot本身自带的的灵活性和轻量级脚本语言 GDScript 使得实现对话系统变得相对简单。以下是实现一个基础对话系统的示例。(语言为GDScript但高亮选择Python因为类似)通过 Godot 和 GDScript,我们可以给我们的游戏实现一个对话系统。从简单的文本显示到复杂的分支对话,Godot 提供了足够的灵活性来满足我们的需求。如果需要更高级的功能,可以尝试使用现成的插件如 Dialogic。

Octopus2077的博客 2522

DCDC系列(一): COT DCDC基本原理

电流环DCDC属于双环控制模式,根据电流检测的位置,分为峰值电流环控制模式、谷值电流环控制模式和平均电流环控制模式,主要由输出电压反馈环和电流环两个环路来实现控制,其瞬态响应比电压环更好,且有自动限流的功能,但仍需要斜坡补偿网络,且对噪声敏感。Stage3: 在下管NMOS打开阶段,由于后级负载此时间段内消耗的电量较少,所以VFB还未低至Vref,所以此阶段中,上管PMOS和下管NMOS均处于关断状态,此时的电感电流为0mA,此阶段测的VSW上的电压就是Cout上的电压VREG;

weixin_40073649的博客 3941

GoF总结-9(桥接模式)

文章目录1. 概念2. 优点3. 缺点4. 结构与实现4.1 结构4.2 实现 1. 概念 将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这连个可变维度的耦合度。 桥接模式遵循了里氏替换原则和依赖倒置原则,最终实现了开闭原则,对修改关闭,对扩展开放。 2. 优点 抽象与实现分离,扩展能力强 符合开闭原则 符合合成复用原则 其实现细节对客户透明 3. 缺点 由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,能正确地识别出系统中两个独立变化的维度,这

星是河的眼的博客 742

【Bug已解决】Claude Desktop Cowork 报错 Workspace unavailable 解决方案

方案适用场景推荐指数确认虚拟机镜像下载完整性排查的第一步,最基础的前提检查⭐⭐⭐⭐⭐确认虚拟机平台功能已启用Windows 系统功能层面的必要条件⭐⭐⭐⭐⭐重启 CoworkVMService快速尝试恢复服务正常状态⭐⭐⭐⭐完全重启客户端排除临时性状态错乱⭐⭐⭐⭐降级使用文件工具临时替代方案,不阻塞当前工作⭐⭐⭐报错的本质是Cowork 功能依赖的虚拟机管理服务,在 Windows 应用包隔离机制下未能正确定位虚拟机文件的实际存放路径。

博客 6231

详解设计模式:桥接模式

桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或者柄体模式,有点像适配器模式,也是 GoF 的 23 种设计模式中的一种结构型设计模式。 桥接模式 是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。 本篇内容包括:关于桥接模式、桥接模式实现 Demo

栗筝i的博客 4016

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

五万字详解“GoF”的23种设计模式

大家好,我是栗筝i,近期我总结梳理了 “GoF”的 23 种设计模式,并使用 Java 对每种设计模式都进行了伪代码与 Demo 实现,并总结了每种设计模式的应用场景,优缺点,UML图等相关内容,字/词数达到了5万,希望对大家有所帮助~~

栗筝i的博客 4167

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

吐槽大全 -GoF《设计模式》

对GoF《设计模式》等面向对象设计的经典书籍的吐槽。分散在各文章中的吐槽将被删除。

yqj2065的博客 1531

ssm框架搭建

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

GOF23设计模式之桥接模式

GOF23设计模式之桥接模式,适用场景、场景分析、桥接模式核心要点分析、示例、总结

开心杨的个人博客 2791

GoF设计模式——桥接模式

本文介绍了桥接模式(Bridge Pattern),这是一种结构型设计模式,用于解决多维度变化导致的类爆炸问题。桥接模式的核心思想是将抽象与实现分离到两个独立维度,通过组合而非继承实现解耦。文章通过图形编辑器的例子说明传统继承方式的缺陷,详细讲解了桥接模式的四个角色(抽象、修正抽象、实现、具体实现)及其UML结构。代码示例展示了遥控器与电视的桥接实现,解释了抽象层为何使用抽象类而非接口。最后对比了桥接模式与简单组合的区别,强调了桥接模式在解耦维度变化方面的优势。该模式适用于需要多维度独立扩展的场景,能有效减

多低调的博客 376

Java设计模式——GoF设计模式

一、GoF设计模式简介 本节内容参考《Java设计模式》@刘伟 编著,清华大学出版社出版,设计模式详解请参考原书。 1.GoF 的 23 种模式一览表 范围/目的 创建型模式 结构型模式 行为型模式 类模式 工厂方法模式 (类)适配器模式 解释器模式 模板方法模式 对象模式 抽象工厂模式 建造者模式 原型模式 单例模式 (对象)适配器模式 桥接模式 组合模式

weixin_40587145的博客 3273

GOF设计模式简介

1.简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可...

yoyoseng的博客 873

GoF设计模式——结构型设计模式分析与应用

适配器模式:解决不兼容接口的适配问题。 桥接模式:解耦抽象与实现,增加系统的可扩展性。 组合模式:通过树形结构统一处理单一对象与组合对象。 装饰器模式:动态地在运行时为对象添加功能,增加系统的灵活性。 外观模式:简化客户端接口,降低系统的耦合度。 享元模式:优化内存和性能,适合大量相似对象的场景。 代理模式:控制对象的访问,增强目标对象的功能,同时保持目标对象的独立性。 这些模式的优点使它们在面对特定问题时成为非常有力的工具,能有效提升代码的可扩展性、灵活性和可维护性。

JK01WYX的博客 1230

[设计模式-1]23种GOF设计模式及7大原则概述

java 设计模式 原则

心流时间的博客 1421

GOF 23种设计模式——桥接模式(Bridge)

桥接模式(Bridge)是一种结构型设计模式。 定义: 桥接模式将抽象部分与实现部分分离,使他们都可以独立的进行变化。 主要特点: 把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 桥接模式的UML图如下: 桥接模式的角色和职责: 1. Client 调用端 这是Bridge模式的调...

WWW_SYR的博客 507

23种GoF设计模式

GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式

笔记 1371

GOF设计模式之桥接模式

一、引入 现需要提供能够绘制4种不同颜色且笔画粗细有大中小3种型号的画笔。 方法一:蜡笔 我们需要准备3*4=12支蜡笔,也就是说必须准备12个具体的蜡笔类 方法二:毛笔 只需要准备三种型号的毛笔,外加四个颜料盒,用3+4=7个类就可以实现12支蜡笔的功能 二、定义 桥接模式的定义:将抽象与实现分离,使它们可以独立变化。它是用关联关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。 三、实现 基础实现 //实现化角色 interface Implementor { publi

digiproto2020的博客 357

GoF的23种设计模式

一、设计模式的分类 1.根据模式的目的:即模式是用来完成什么工作的,这种方式分为创建型模式、结构型模式和行为型模式。 (1)创建型模式:用于描述怎么样创建对象,主要特点是:将对象的创建和使用分离,GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 (2)结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 (3)行为型模式:用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的

tangyin_007的博客 1162
上一篇: Visual Paradigm创建Java类图时如何绘制实线箭头?
下一篇: 完美解决: Error:java: 无效的源发行版: 10 (IDEA)
让程序飞
博客等级 码龄10年 8831粉丝 99原创
评论 13
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让程序飞

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值