桥接模式(Bridge)

Bridge Pattern 桥接模式 有时候一个类,可能会拥有多个变化维度。比如奶茶可以选择容量大小、口味风味。容易想到的实现方案是通过继承实现各种组合,但是这样会很容易造成类爆炸。那么有没有什么良策呢?答案就是 Bridge Pattern 桥接模式,其是结构性模式的一种,本文就让我们来了解下该模式 设计模式 模式思想 这里,我们需要构建一个汽车类,我们知道汽车有很多品牌,比如宝马BMW、奔驰Benz。与此同时,汽车的颜色又是五颜六色的,常见的有红、绿、蓝。可以看到在这里对于汽车而言,其存在两个维度——品牌、颜色 阅读详情
1、概述 
桥接模式是一种结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。也可描述为抽象化与实现化解耦,使得二者可以独立变化。
2、重点
核心思想是:将继承模式转化成关联关系,降低了类与类之间的耦合度。将两个角色之间的继承关系修改为关联关系,强关联改换成弱关联。
3、优缺点
优点
  • 分离抽象接口及其实现部分,降低了系统耦合度。
  • 桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原来的系统。
  • 实现细节对客户不透明,可以隐藏实现细节。
缺点
  • 桥接模式的引入会增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行编程。
4、场景
  •  一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的继承联系,通过桥接模式可以使它们在抽象层建立一个关联关系。
  • 对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。
  • 一个类存在两个独立变化的维度,且这两个维度都需要进行扩展。
5、实例
桥梁模式在Java应用中一个非常典型的例子就是JDBC驱动器。JDBC为所有的关系型数据库提供一个通用的界面。一个应用系统动态的选择一个合适的驱动器,然后通过驱动器向数据库引擎发出指令。这个过程就是将抽象角色的行为委派给实现角色的过程。
本例也采用数据库连接的一个样例,系统开发中涉及到需要连接多个数据库的问题,假设系统需要同时连接oracle和mysql两种类型数据库:



public interface Driver {
public void connect();
}

public class OracleDriver implements Driver {
@Override
public void connect() {
System.out.println("连接oracle。。。");
}
}

public class MysqlDriver implements Driver{
@Override
public void connect() {
System.out.println("连接mysql。。。");
}
}

public class Bridge {
private Driver driver;
public Driver getDriver() {
return driver;
}
public void setDriver(Driver driver) {
this.driver = driver;
}
}

public class BridgeTest {
public static void main(String[] args) {
//oracle
Bridge oracleBridge = new Bridge();
Driver oracleDriver = new OracleDriver();
oracleBridge.setDriver(oracleDriver);
oracleDriver.connect();
//mysql
Bridge mysqlBridge = new Bridge();
Driver mysqlDriver = new MysqlDriver();
mysqlBridge.setDriver(mysqlDriver);
mysqlDriver.connect();
}
}

中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总 中国大学MOOC-翁恺-C语言程序设计习题集 PAT 习题集 02-0. 整数四则运算(10) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2... 阅读详情

相关推荐

数据库和BI工程师面试题

 一.数据库 1.Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用? 2.Oracle数据库,有哪几类索引,分别有什么特点? 3.Union与Union All的区别? 4.对游标的理解?游标的分类?使用方法? 5.如何查找和删除表中的重复数据?给出方法或SQL。 6.不借助第三方工具,怎么查看SQL的执行计划? 7.创建索引有哪些需要注意的要点?

web_go_run的专栏 1万+

处理多维度变化——桥接模式(二)

10.2 桥接模式概述         桥接模式是一种很实用的结构型设计模式,如果软件系统中某个类存在两个独立变化的维度,通过该模式可以将这两个维度分离出来,使两者可以独立扩展,让系统更加符合“单一职责原则”。与多层继承方案不同,它将两个独立变化的维度设计为两个独立的继承等级结构,并且在抽象层建立一个抽象关联,该关联关系类似一条连接两个独立继承结构的桥,故名桥接模式。         桥接模式

刘伟技术博客 3万+

Diffusion Model进阶解析:从SDE到概率流ODE的连续化生成建模

本文深入解析了Diffusion Model的连续化生成建模,从离散DDPM和SGM模型引入,阐述了采用随机微分方程(SDE)统一视角的必要性与优势。文章详细拆解了SDE的构成,揭示了其如何统一描述扩散过程,并重点介绍了逆向SDE与确定性的概率流ODE,后者为高效、确定的图像生成提供了理论基础。最后,文章对比了朗之万动力学、数值SDE求解器和数值ODE求解器(如DPM-Solver)等主流采样方法的实战应用与选择策略。

weixin_29099217的博客 437

【设计模式】桥接模式详解,如何优雅地处理不同维度的系统变化? 有原理、示例、场景、优缺点及常见面试题和答案

桥接模式是一种设计模式,用于将抽象部分与它的实现部分分离,以便两者可以独立地变化。这种模式涉及一个接口,它充当一个桥,使得具体类可以独立地改变。 在桥接模式中,抽象类和实现类可以通过组合关系进行连接,而不是继承关系。这样可以减少类之间的耦合,使得抽象类和实现类可以独立地变化。

十年以上编程经验的干货分享 1252

56-FMC连接器电路设计

FMC连接器电路设计

weixin_66510961的博客 4721

【STM32Cube HAL】输入捕获(六)——PWM测量

实验内容:使用通用定时器输入捕获测量信号的脉宽(检测按键按下的时间)。 一、原理图 二、 CubeMX配置 Step1.打开 STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103VETx。 Step2.选择时钟源,并配置时钟树。选择Crystal/Ceramic Resonator,并配置系统时钟为72M。 Step3.配置SYS,我们这里选择的是Serial Wire。(正常情况配置不配置不影响,debug可以使用。但是你不可以把这...

HAHAHA 1万+

桥接模式-处理多维度变化

如果软件系统种某个类存在两个或以上变化的维度,通过该模式可以将这些维度分离处理,使两者可以独立扩展,让系统更加符合单一职责原则。将独立的维度设计为不同的继承等级接口,并在抽象层建立一个抽象关联,该关联类似一条连接这些独立继承结构的桥。

KEEP CODING 388

别再硬编码了!Flowable工作流动态审批人配置全解析(Spring Boot集成版)

本文深入解析Flowable工作流在Spring Boot中的动态审批人配置技术,通过角色、部门等变量实现审批流程的灵活设计。文章详细介绍了架构原理、前端配置映射、动态候选组解析及查询优化方案,帮助企业提升审批流程的适应性和维护效率。

weixin_30919571的博客 133

桥接设计模式13

一、定义 官方定义:桥接模式属于结构型设计模式,将抽象部分与实现部分分离,使它们都可以独立的变化。 将两种可以独立变化的抽象分离开来,让它们独立的变化。再通过组合者两个抽象,形成功能强大的组合类。 上述定义太专业了,我的理解是:一个抽象类中持有多个接口或抽象类的引用,抽象类可以有不同的子类,接口也可以有不同的实现类,将这些不同的子类与不同的...

大宇的博客,欢迎访问 576

达梦DM8整合Seata AT模式实战:手把手教你搞定分布式事务(含源码修改避坑)

本文详细介绍了达梦DM8数据库与Seata AT模式的深度整合实战,包括环境准备、架构设计、源码适配及分布式事务落地。通过独创性源码改造,解决了Seata官方对达梦数据库AT模式支持的限制,为国产数据库在微服务架构中的应用提供了可靠的事务保障。

weixin_30764771的博客 332

华为OD机试真题:明日之星选举 (Java/Py/C/ C++/JS/GO)

华为OD机试(机考)双机位C卷 【明日之星选举】,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 明日之星选举。

qq_45776114的博客 919

桥接(Bridge)模式详解

桥梁模式,将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现分离的办法就是增加一个类, 11.1.解释 main(),客户 IProduct,产品接口 CHouse,房子 CIPod,ipod CClothes,服装 CNewCorp,桥梁类,MakeMoney()是桥梁方法 CNewHouseCorp,只能生产房子,所以构造函数是CHous

hualicuan的专栏 934

【AI Agent】Harness Engineering实践

Harness(运行宿主)是围绕 LLM构建的一套确定性工程系统,其核心职责是:承认模型的固有局限,用可控的工程手段逐一弥补,使"强大但不可靠的推理引擎"变成"可信赖的生产级Agent"模型 是发动机——提供原始动力Agent 是驾驶员——做出决策Harness 是道路、地图、护栏、仪表盘、维修站和质检线——确保行驶安全有序没有Harness,模型越强,可能只是更快地制造混乱。

sysu_lluozh 190

桥接模式 Bridge Pattern

的理解出了问题。

DachuiLi的博客 1071

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C++ 桥接模式 (Bridge Pattern)

flyfish

二分掌柜的 1698

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

桥接模式(Bridge Pattern)

桥接模式将抽象部分与实现部分分离,让它们都可以独立地变化。这种模式在软件设计中非常有用,特别是在处理具有两个或多个独立变化维度的类型时。通过桥接模式,我们可以将这些类型分解成多个较小的类,这些类可以更容易地进行扩展和维护。

猪猪 533

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

桥接模式Bridge Pattern

使它们都可以独立地变化对象结构型模式。

Resurgence03的博客 912

23种设计模式——桥接模式 (Bridge Pattern)详解

本文介绍了23种经典设计模式之——桥接模式(Bridge Pattern)的使用及说明

Meteors.的博客 1224

桥接模式(Bridge Pattern)

将抽象与其实现分离,以便二者可以独立变化。more通过使用桥接模式,可以更好地管理类之间的关系,提高系统的灵活性和可维护性,同时也有利于解决类爆炸的问题。

jaune162的专栏,最新动态请关注:https://jaune162.blog 1412

Java 桥接模式(Bridge Pattern)

桥接模式通过引入一个中间层的桥接接口(或抽象类),将原本的抽象部分与其实现部分分开。这样,抽象层与实现层的扩展不再相互影响,从而降低系统的复杂性并提高可扩展性。

qq_35082497的博客 969

设计模式-桥接模式-bridge pattern

桥接模式(Bridge Pattern)是一种结构性设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。这种模式通过定义一个桥接接口,将实现的类和抽象的类解耦,从而能够独立地扩展抽象类和实现类。抽象(Abstraction):扩展抽象(Refined Abstraction):实现化(Implementor):具体实现化(Concrete Implementor):首先,定义实现化接口: 接着,创建具体的实现化类: 然后,定义抽象类: 接着,扩展抽象类: 最后,客户端代码使用桥接模式: 1.3.

wesigj的博客 2823
上一篇: 建造者模式(Builder)
下一篇: 组合模式(Composite Pattern)
水之光love
博客等级 码龄12年 56粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值