java设计模式---- 桥接模式

Java设计模式之桥接模式 Java设计模式之桥接模式 考虑一下生活中的场景,银行存款有很多类型,最常见的是活期和定期,而银行有很多家。比如中国农业银行有活期和定期,中国工商银行也有活期定期。下面看看桥接模式怎么实现: //新建接口,账户 public interface Account { Account openAccount(); void showAccountType(); } //定期... 阅读详情
主文章(所有java设计模式的目录)
https://blog.youkuaiyun.com/grd_java/article/details/122252696
源码位置
码云:https://gitee.com/yin_zhipeng/design_mode.git
GitHub:
学习设计模式前必须知道的东西
  1. 看待设计模式,要站在更大的角度(代码重用性、可读性、可扩展性、可靠性、程序高内聚,低耦合)来综合考虑看待,而不是功能实现的角度看待,不要觉得实现一个功能没必要这么麻烦
  1. 文章中给出的设计模式类图都是标准的实现方式,并不一定要完全遵守标准,所以只要设计思想符合,一个设计模式有多种实现方式,尤其是看别人源码的时候,不要用标准类图死扣

1. 桥接模式(Bridge Pattern)

手机操作问题,了解类爆炸,以下设计方式,违反单一职责原则
  1. 对于不同手机类型,不同品牌实现操作编程(开机,关机,打电话等)
    在这里插入图片描述
  2. 假设加上一个种类,翻盖式,那么我们就需要再创建一个翻盖式抽象,实现3个品牌
  3. 一个两个还好,如果添加100个种类呢?就会发生类爆炸(类贼多)
    在这里插入图片描述
  4. 上图中,HuaWei类、Vivo类、XiaoMi类,每个手机种类都有3个,有100个种类就需要100个
  5. 我们要保证,就算我们有1000个种类,也只需要各种类,1个,而不是1000个
桥接模式
  1. 将实现与抽象放在两个不同类层次中,使两个层次可以独立改变
  2. 一种结构型设计模式
  3. 基于类的最小设计原则,通过使用封装,聚合和继承等行为让不同的类承担不同的职责。主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展
  4. 通俗理解:手机都有个种类,但是每个品牌的手机都需要彰显自己的与众不同,例如翻盖手机,都能翻盖,但是小米手机是上下翻盖,Vivo手机是左右翻盖,所以具体功能的实现是每个品牌厂商自己实现的,所以我们实际动作,比如打电话,是Vivo或XiaoMi类实际操手的,其它类都只做一些抽象和无关功能的实现
类图:com/yzpnb/design_mode/bridge_pattern/uml/bridge_pattern.puml

在这里插入图片描述

1. 利用桥接模式,解决手机操作的类爆炸问题

类图:com/yzpnb/design_mode/bridge_pattern/uml/Phone.puml

在这里插入图片描述

  1. 桥怎么回事呢?FoldedPhone的call()方法,除了自己的个性实现,还调用了Phone类的call()方法
  2. Phone类的call()方法,实际调用的是Brand接口的call()方法
  3. 接口Brand的call()是个抽象,实际调用工作的,是Vivo和XiaoMi等类的call()方法
  4. 这样就像一个桥一样,所以叫桥接模式
  5. 明显的改观就是,尽管我们有两个种类,Vivo和XiaoMi品牌也都只有一个,就算增加100个种类,品牌个数也不会变
代码:com/yzpnb/design_mode/bridge_pattern/phone
  1. 品牌抽象(行为实现类接口)
    在这里插入图片描述
  2. 品牌实现类(行为具体实现类)
    在这里插入图片描述
    在这里插入图片描述
  3. 种类,维护品牌(组合),就算各品牌,要按照种类生产手机(维护行为实现类接口)
    在这里插入图片描述
  4. 翻盖种类,行为的具体实现类
    在这里插入图片描述
  5. 用户用的时候,觉得是通过翻盖手机打电话,但实际,打电话功能是厂商自己实现的(苹果和安卓手机,都是触碰手机,但是打电话界面是不一样的)
    在这里插入图片描述

2. 源码中用到的桥接模式

JDBC的Driver接口(从桥接模式看),这就是一个接口,而MySql和Oracle都有Driver类,我们不能因为种类不一样,而每一个种类都写一套实现,所以这里使用了桥接模式
  1. 这里的桥接设计模式,和我们上面介绍的标准的实现方式不一样,但是思想对了就行,毕竟java设计模式标准的制定是在java出现很久之后才规定出来的
    在这里插入图片描述
  1. 先看com.mysql.cj.jdbc.Driver,这是Mysql的驱动类
    在这里插入图片描述
  2. 进入DriverManager观看,getConnection方法,看他获取的是什么Connection对象
    在这里插入图片描述
  3. 看看Connection是什么,原来就是一个接口,它下面,是mysql实现的,如果我们引入Oracle的JDBC依赖,你还会看见Oracle的,我们进入ConnectionImpl类看看
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 5.0版本JDBC的类图如下
    在这里插入图片描述
【Java设计模式】Java设计模式之(二十)桥接模式(Bridge Pattern) 本文目录 一、桥接模式介绍 1.1 含义 1.2 适用场景 1.3 主要解决 1.4 应用实例 1.5 优缺点 二、桥接模式实现 2.1 类图 2.2 角色分析 2.3 代码实现 三、源码分析 这种类型的设计模式属于结构型模式。 一、桥接模式介绍 1.1 含义 桥接模式即将抽象部分与它的实现部分分离开来,使他们都可以独立变化。 桥接模式将继承关系转化成关联关系,它降低了类与类之间的耦合度,减少了系统中类的数量,也减少了代码量。 将抽象部分与他的实现部分分离这句话不是很好理解 阅读详情

相关推荐

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8259

Java 构造方法——Phone类

创建一个Phone类(name,color,price,weight,ram)创建一个无参的构造方法,创建一个有参的构造方法给Phone的属性初始化,show方法用于显示对象信息,通过两种方式创建对象 类: public class Phone { String name;//名字 String color;//颜色 float price;//价格 float weight;//重量 float ram;//内存 //利用构造方法传递参数 publi

qq_56924160的博客 7810

.NET MAUI跨平台串口通讯方案

MAUI跨平台串口通信架构设计采用分层模式,核心是共享业务逻辑层与平台特定实现。通过定义统一的ISerialPortService接口,实现了Windows、Android、iOS和macOS四大平台的串口通信功能。Windows平台使用System.IO.Ports类库,Android通过USB Host模式实现,iOS基于ExternalAccessory框架,macOS则采用IOKit。该设计支持串口连接管理、数据收发等核心功能,并通过事件机制实现异步通信。架构采用条件编译区分各平台实现,确保代码复用

冰茶的博客 1664

设计模式(Java)——桥接模式实例之手机样式

桥接模式 将实现与抽象放在两个不同的类层次中,使得两个类层次可以独立改变。对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用。 使用环境: JDBC程序驱动 银行转账系统:网上转账,柜台转账,ATM转账 消息分类:…… 类图: 代码实现: public class Client { public static void main(Stri...

qq_41124481的博客 477

18、未来医疗信息学中的太赫兹天线技术

本文探讨了太赫兹天线技术在医疗信息学中的关键作用,重点分析了分裂环谐振器和纳米结构光导天线(PCA)的设计与性能提升方法,介绍了相干与非相干太赫兹检测技术,并通过等效电路模型和数值模拟深入解析PCA工作机理。文章还展示了太赫兹技术在无创血糖监测、肿瘤检测等医疗诊断中的实验应用,总结了其非侵入性、高分辨率成像和多参数分析等优势,同时指出信号检测难、成本高和技术复杂等挑战。未来趋势包括设备小型化、效率提升及与人工智能融合,拓展至药物研发、皮肤与神经疾病诊断等领域,展现出变革医疗健康的巨大潜力。

milk8的博客 146

通信原理 | 窗函数 | 矩形窗 | 汉宁窗 | 汉明窗 | 布莱克曼窗 | 补零对频谱的影响

比如,原信号是一个周期的余弦信号,又给它补了9个周期长度的0,那么信号并不是10个周期的余弦信号,而是一个周期的余弦加一串0,补零并没有带来新的信息!频谱分辨率的含义是两个频率不同的信号在频率上可分,也就要求他们不能落到一个频域函数的主瓣上,所以,如果待分析的两个信号频率接近,而时域长度又短,那么在频域上他们就落在一个频域函数的主瓣内了,补再多的零也无济于事。而形状(主瓣宽度)是由补零之前的信号长度决定的,补零的作用只是细化了频域序列,并没有改变其主瓣宽度。所以,汉宁窗牺牲了分辨率,换来了旁瓣泄露的减小。

若北辰 1305

java—工厂设计模式(简单工厂模式)(工厂方法模式)(抽象工厂模式)

工厂设计模式(简单工厂模式)(工厂方法模式)(抽象工厂模式) 工厂设计模式介绍: 实例分析: 我想买一部手机->手机型号有iphone,HUAWEI 分析图如下: (一)使用接口的基础方法实现 代码如下: interface Phone{ void printInfo(); } class Iphone implements Phone{ public void printIn...

范玖久的博客 272

从SOMEIP看SOA,汽车电子电器架构的转变

从SOMEIP看SOA,汽车电子电器架构的转变

天赐好车的博客 242

Java学习(3)——面向对象

面向对象简介面向对象基本概念类对象构造方法引用与对象实例staticfinal权限修饰符 简介 Java 是面向对象的高级编程语言,类和对象是 Java 程序的构成核心。本节讲重点讲解面向对象的相关内容,主要围绕 Java 类和对象展开。 知识点 类 对象 构造方法 引用与对象实例 static final 封装 继承 方法重载与重写 多态 抽象类 接口 内部类 面向对象基本概念 对象,从字面...

B_Sheep的博客 938

【DaVinci Developer专题】-41-APP SWC如何读取写入NVM Block数据

APP SWC Port如何Read读取/Write写入NVM Block数据; DaVinci Developer中的Calibration Parameter/Per-Instance Memory/Service Need如何配置。

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

llama-factory微调qwen2.5-vl

使用llama-factory完成qwen2.5-vl微调

qq_44908396的博客 2933

java语言自主编程模拟数据文件

数据格式样本为: 2018-08-242 19:08:320,15219835179,重庆,小米,http://www.jd.com.htm 在本数据中包含: 时间; 电话; 地点; 手机品牌; 网址; (1)首先实现输出时间: 在java中用Date方法可以输出当前时间 Date date=new Date(); Sy...

qq_42763499的博客 296

鸿蒙系统开发工程师:核心技术解析与深度面试指南

摘要: 鸿蒙系统开发工程师需具备底层驱动开发、系统移植优化及分布式架构能力。核心职责包括硬件适配(Bootloader、内核移植、HDF驱动开发)、性能调优(启动加速、功耗管理)及稳定性保障。技术要求涵盖C/C++编程、Linux内核机制、鸿蒙架构(HDF、分布式服务)及ArkTS/ArkUI基础。面试重点考察系统移植流程(如ARM板适配)、驱动开发(I2C/Display)、性能优化手段及内存/同步机制的应用。

郑伟强dev的专栏 430

Java 设计模式之桥接模式(Bridge Pattern)

桥接模式(Bridge Pattern)是一种用于将抽象部分与其实现部分分离的结构型设计模式。这种模式通过组合关系而不是继承关系来连接抽象与实现,使代码更具扩展性和维护性。桥接模式的核心思想是将抽象和实现解耦,使得两者可以独立变化。桥接模式(Bridge Pattern)是一种结构型设计模式,旨在将抽象部分与其实现部分分离,从而使两者可以独立地变化。桥接模式通过组合关系代替继承关系,将抽象和实现解耦,使代码更具扩展性和维护性。

微笑听雨 2838

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

JAVA设计模式之 桥接模式【Bridge Pattern】

一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式。二、适用场景 处理多维度变化。 业务场景:某功能为将数据库中的数据转换成多种文件格式,例如txt、xml、pdf等格式,同时需要支持多种不同类型的数据库的读取。便可使用桥接模式对其进行设计。 这里的维度有两个 分别为:不同的文件格式

小吕丶Code阶区 5241

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【JAVA设计模式】之桥接模式(BridgePattern)

桥接模式的作用是将两样东西连接起来,比如桥梁把河的两岸连接起来 桥接模式把“类的功能层次结构”和“类的实现层次结构”连接起来 类的层次结构 类的功能层次:父类通过定义抽象方法来定义接口API 类的实现层次:子类通过实现具体方法来实现接口API 示例程序 相关类一览表 类的层次 类名 描述 功能层 Express 快递寄件 功能层 EnhanceExpress (寄件)增加代收功能 实现层 ICompany 快递公司 实现层

兵临城下的博客 358

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java设计模式 九 桥接模式 (Bridge Pattern)

定义设备的通用操作接口。

空 1168

Java设计模式——桥接模式【Bridge Pattern】

Java设计模式、桥接模式、Bridge Pattern

scorpio的博客 1796

Java 设计模式之桥接模式,Java 桥接模式 ,java Bridge Pattern

Java 设计模式之桥接模式 Java 桥接模式 java Bridge Pattern ================================ ©Copyright 蕃薯耀2021-07-05 https://blog.youkuaiyun.com/w995223851 一、桥接模式(Bridge Pattern) 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 ..

蕃薯耀的博客 168

java设计模式---桥接模式(Bridge pattern)

java设计模式—桥接模式(Bridge pattern) 桥接模式是结构型设计模式之一,也称为桥梁模式。桥接模式(Bridge)是为了解决将抽象部分与实现部分分离,好让他们都在自己的维度上有多维度地变化。 1. 定义 将抽象部分(Abstraction)与实现部分(Implementor)分离,使它们可以独立地变化。从模式的定义上来看,我们可以知道,这里的桥梁指的就是连接抽象类与实现类...

渔潭的博客 437

JAVA设计模式之桥接模式

1. 抽象和具体之间增加更多的灵活性,使用桥接模式避免了使这两个层次之间产生静态的继承关系, 通过桥接模式使他们建立关联关系,抽象部分和具体的实现部分都可以继承的方式独立扩展互不影响 1. 一个存在两个(或多个)独立变化的维度,且这两个(或多个)维度都需要独立进行扩展 2. 不希望使用继承,或因为多层继承导致系统类的个数剧增

hyzsuccess的博客 942

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

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

3万+

Java设计模式-桥接模式

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

heima201907的博客 270

java设计模式之桥接模式

桥接(Bridge)是用于把抽象化与现实化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。比如,可以使用相同的抽象类方法但是不同的桥接实现类,来画出不同颜色的圆。 模式介绍: 意图:将抽象部分与实现部分分离,使它们可以独立的变化。 主要解决:在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用

li_w_ch的博客 251

java设计模式 不同数据库_JAVA设计模式之 桥接模式【Bridge Pattern】

一、概述将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式。二、适用场景处理多维度变化。业务场景:某功能为将数据库中的数据转换成多种文件格式,例如txt、xml、pdf等格式,同时需要支持多种不同类型的数据库的读取。便可使用桥接模式对其进行设计。这里的维度有两个 分别为:不同的文件格式 和 不同的数据库类型。如下图:三、U...

weixin_32248531的博客 486
上一篇: java设计模式---- 适配器模式,手写SpringMVC适配器设计模式
下一篇: java数据结构YZP专栏版-----堆栈
ydenergy_殷志鹏
博客等级 码龄7年 5886粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值