学习设计模式之桥接模式

海康威视VS互联网大厂:薪资、福利、工作强度全方位对比 本文全面对比了海康威视与互联网大厂在薪资、福利和工作强度等方面的差异。海康威视提供稳定的薪资结构和较低的工作强度,适合追求专业深度的职场人;而互联网大厂则以高薪和快速成长吸引人才,但工作压力较大。文章还分析了职业发展路径和长期价值,帮助求职者做出明智选择。 阅读详情

桥接模式
在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?这就要使用桥接模式。而具体使用的方式,则是将抽象部分与他们的实现部分分离,使得它们都可以独立的变化。

什么才是抽象部分与它的实现分离呢,并不是说将抽象类和实现类分离。实现指的是抽象类和它的实现类用来实现自己的对象。

类结构图
桥接模式类结构图
Abstraction
抽象部分
RefinedAbstraction
被提炼的抽象
Implementor
实现部分
ConcreteImplementorA、ConcreteImplementorB
具体实现

从上图来看抽象部分的具体行为交给了实现部分,举个栗子笔记本有很多品牌,笔记本可以安装很多软件,那么可以分为笔记本品牌和笔记本软件抽象类,让不同的品牌和功能分别继承于他们。这样的话要增加新的品牌或新的功能都不用影响到其他类了。笔记本品牌包含软件,但软件不是品牌的一部分,所以它们之间是聚合关系。

在这里插入图片描述
代码示例

public interface NotebookSoft {
    void run();
}

public class NotebookSoftA implements NotebookSoft {
    @Override
    public void run() {
        System.out.println("运行 A 软件!");
    }
}

public class NotebookSoftB implements NotebookSoft {
    @Override
    public void run() {
        System.out.println("运行 B 软件!");
    }
}

public abstract class Notebook {

    private NotebookSoft notebookSoft;

    public void setNotebookSoft(NotebookSoft notebookSoft) {
        this.notebookSoft = notebookSoft;
    }

    public NotebookSoft getNotebookSoft() {
        return notebookSoft;
    }

    public abstract void run();
}

public class NotebookA extends Notebook {
    @Override
    public void run() {
        System.out.println("A 笔记本开始运行!");
        super.getNotebookSoft().run();
    }
}

public class NotebookB extends Notebook {
    @Override
    public void run() {
        System.out.println("B 笔记本开始运行!");
        super.getNotebookSoft().run();
    }
}

客户端示例

public class Client {
    public static void main(String[] args) {
        Notebook notebook = new NotebookA();
        notebook.setNotebookSoft(new NotebookSoftA());
        notebook.run();
        notebook.setNotebookSoft(new NotebookSoftB());
        notebook.run();

        notebook = new NotebookB();
        notebook.setNotebookSoft(new NotebookSoftA());
        notebook.run();
        notebook.setNotebookSoft(new NotebookSoftB());
        notebook.run();
    }
}

运行结果

A 笔记本开始运行!
运行 A 软件!
A 笔记本开始运行!
运行 B 软件!
B 笔记本开始运行!
运行 A 软件!
B 笔记本开始运行!
运行 B 软件!

Process finished with exit code 0

优点

  1. 分离抽象接口及其实现部分。提高了比继承更好的解决方案。
  2. 扩展更加的容易,符合对修改关闭对扩展开放。

缺点
桥接模式的引入会增加系统的理解与复杂度。

KEPServerEX 6 之 GE Ethernet 连接FANUC ROBOT机器人实战 GE Fanuc是GE公司控制系统部门的一部分,成立于1998年。其主要业务涵盖工业自动化、控制系统、PLC和组态软件等领域。其产品可用于包括自动化、过程自动化、国防、汽车制造、通讯、医疗和航空航天等各种工业领域2009 8月 GE和FANUC今天宣布两家公司已同意解除合资企业GE FANUC自动化公司。通过以上历史,GE Ethernet Driver 当下还支持对接FANUC ROBOT机器人 就不奇怪了。 阅读详情

相关推荐

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 606

桥接模式学习总结

一、概念桥接模式将抽象部分(Abstraction)和实现部分(Implementor)相分离,使它们可以相互独立地变化,是一种对象结构型模式。 类图如下: 二、实例之跨平台系统视频播放器//抽象视频文件类---Implementor public interface VideoFile { public void decode(String osType,String fileName

晓风残月龙 520

免费升级哨兵2号分辨率!用SRCNN深度学习模型实现10米→2.5米超分重建

本文详细介绍了如何利用SRCNN深度学习模型,将哨兵2号遥感影像的分辨率从10米免费提升至2.5米。文章提供了从数据准备、模型训练到部署应用的全流程实战指南,旨在通过AI应用技术,为农业监测、城市规划等领域提供更高精度的影像数据支持。

coffee的博客 523

桥接模式——bridge

实现下面图的结构:我们可以使用多继承来实现 但是如果要增加一个新的类型:则需要增加各个品牌下面的类,如果要增加一个新的品牌,也要增加各种电脑类型的类。这样会引起类的个数的增加。 桥接模式核心要点:    ——处理多继承结构,处理多维度变化的场景,将各个维度设计成独立的继承结构,使各个纬度可以独立的扩展在抽象层建立关联。 如果按照多继承来实现上图应该是这样的: package

不会停下学习的脚步,重在思考。 319

探索如何利用CST和ADS进行DDR的SIPI联合仿真

本文系统介绍了CST和ADS两款工具进行DDR信号完整性/电源完整性(SI/PI)联合仿真的方法。CST采用工作室协同方式,通过PCB布局导入、材料设置、模型分配等步骤,重点分析了电源阻抗优化和信号波形质量。ADS则利用SIPro、PIPro等专用工具,突出系统级验证和自动化优化功能。两者各有优势:CST擅长3D结构精确建模,ADS更适于快速系统验证。文章建议可根据项目需求混合使用两种工具,并提供了模型简化、频带选择等实用技巧。通过对比分析,为工程师选择仿真工具提供了决策参考。

一只豌豆象的博客 1148

【软考高级系统架构论文】论微服务架构及其应用

本文围绕“论微服务架构及其应用”展开论述。首先概要介绍了本人参与的某公司线上电子商务平台项目,在其中担任系统架构设计师。接着分析了微服务架构相较于单块架构的特点,如模块化与组件化、技术栈多样性、独立部署与扩展、高度容错与可用性等。最后结合项目阐述了软件架构对微服务模式的采用情况,以及实施过程中遇到的问题及解决方案,如服务划分粒度、数据一致性、监控与故障排查等问题,并给出了相应解决办法。

qq837993702的博客 225

桥接模式学习

桥接模式介绍 桥接模式和多继承的思路是一致的,都是想构造出有多性质的对象 但多继承方案违背了单一职责原则,桥接模式减少了子类的个数,用组合的方式取代多继承方案中的继承的方式 比如: 我想要将小米笔记本写成对象: 定义电脑类 电脑类包含brand和type两个属性 ...

weixin_44796147的博客 223

基于STM32+华为云设计的智慧农业灌溉系统(2023升级版)(158)

本项目设计一种基于STM32的智慧农业监测系统。该系统能够检测空气温度、湿度、光强度和土壤湿度等关键指标,并自动调节浇水量,实现作物生长环境的精细化管理。同时,本项目还支持本地LCD屏幕数据显示和通过ESP8266上传数据到华为云物联网平台,同时搭建流媒体服务器实现摄像头远程监控。最重要的是,本项目将利用Qt开发Android手机APP,使用户可以远程查看监测情况,了解农作物生成情况。

1万+

设计模式学习笔记十二:桥接模式(Bridge Pattern)

设计模式学习笔记十二:桥接模式(Bridge Pattern)     1.概述     桥接模式(Bridge),将抽象部分与它的实现部分分离,是他们都可以独立的变化。什么叫抽象与它的实现分离,这并不是说,让抽象类与其他派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。     下面我们看桥接模式的结构图:     (1).Abs

AlbenXie的博客 610

解决Office 365 SMTP问题:C#邮件发送详解

本文介绍了如何在C#中使用Office 365 SMTP服务发送邮件。重点讲解了正确配置SMTP客户端的关键参数:必须使用587端口并启用TLS加密(EnableSsl=true),同时通过NetworkCredential进行身份验证。虽然SmtpClient已不推荐用于新项目,但本文提供的代码示例仍适用于临时项目或系统维护,并建议未来可考虑使用MailKit等现代邮件库。文章还包含了错误处理机制,确保程序健壮性。

2501_90323865的博客 139

MATLAB算法实战应用案例精讲-【数模应用】装箱问题

装箱问题可以根据不同的维度进行分类。以下是一些常见的装箱问题二维装箱问题:二维装箱问题假设所有物品都是平面上的矩形,并且需要将它们放入平面上的容器中。这个问题的目标是找到一种装箱方案,使得物品不重叠并占据的总面积最小。三维装箱问题:三维装箱问题考虑到物品可以具有高度,并且需要将它们放入三维容器(如箱子或货柜)中。目标是找到一种装箱方案,使得物品不重叠且总体积最小。多维装箱问题:多维装箱问题是指在更高维度空间中进行装箱的问题。除了长度和宽度之外,物品可能具有其他属性,如高度、重量、形状等。

qq_36130719的博客 1571

设计模式学习总结-桥接模式(Bridge Pattern)

问题:在面向对象的设计中,抽象是一个很重要的概念,所谓抽象就是忽略一类对象的特殊特性,提出一些共有的特性,暂时忽略一些细节,而对与此类对象的变化可以使用继承的手段在子类中完成,换言之,用继承来应对抽象的变化。在软件系统中,当抽象由于某种原因也容易变动,使得对象从两个维度或更多方向上发生改变。使用继承方案往往违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比继承...

weixin_34037977的博客 93

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1258

认真学习设计模式之桥接模式(Bridge Pattern)

# 【1】概述 桥接模式(Bridge 模式)是一种结构型设计模式,是指将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。 Bridge 模式基于类的`最小设计原则`,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(`Abstraction`)与行为实现(`Implementation`)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 **UML类图** ![在这里插入图片描述](https://img-blog.csdnimg.cn/c3bc0

小小默:进无止境 1222

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

设计模式学习笔记二十三:今天学什么 - 桥接模式

动机 桥接(BRIDGE)模式 也叫HANDLE/BODY模式,属于对象结构型模式。将抽象部分与实现部分分离,使他们都可以独立的变化。(摘自《GoF设计模式》) 个人见解 我理解的桥接模式就是把存在继承关系的结构中的变化的部分进行封装传入。 UML结构图: 场景模拟:今天学什么? 小明是一个爱学习的孩子,他学习的过程都是一样的,到桌子前,打开台灯,戴上耳机,选择一本书,阅读。 除了选择的书不一样...

weixin_30455067的博客 126

计算机控制技术及应用

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

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

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

JavaKobeBryant的技术交流 605

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java设计模式学习之【桥接模式】

这篇教程不仅提供了桥接模式的理论基础,还通过具体的Java代码示例展示了如何实现和应用这种模式。简单理解,通俗易懂

qq_33129875的博客 1704

设计模式学习-桥接模式

桥接模式 桥接模式是一种比较常见的结构型设计模式,如果系统中的某个类存在两个独立变化的维度,通过桥接模式可以将这两个维度分离出来,使两者可以独立扩展。 桥接模式是一个非常实用的设计模式,它体现了很多面向对象设计原则的思想,单一职责原则、接口隔离原则、合成复用原则、开闭原则、依赖倒转原则、里氏替换原则等。 定义 桥接模式将抽象部分与它的实现部分解耦,使两者都能够独立变化。它用抽象关联取代了传统的多层...

谢谢谢谢呵的博客 350

《Java设计模式学习》桥接模式

桥接模式是一种常用的设计模式,它的主要作用是将抽象部分与实现部分分离开来,从而使得它们可以独立地变化。在桥接模式中,抽象部分通常是指高层次的抽象类或接口,而实现部分通常是指底层次的具体实现类。通过将抽象部分和实现部分分离开来,桥接模式可以让它们独立地变化,从而达到让设计更加灵活、可扩展的目的。例如,假设我们现在要设计一个图形绘制程序,其中包含多种图形类型,如矩形、圆形、三角形等等。我们希望能够让用户根据自己的需求来选择具体的图形类型,并且能够在不修改原有代码的情况下扩展新的图形类型。

一个不断前行的程序者 473

设计模式学习—18桥接模式

桥接模式 文章目录桥接模式UML解释说明代码实现参考资料 UML 解释说明 桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立的变化。 代码实现 Implementor.class package learn18; public abstract class Implementor { public abstract void operation(); } ...

Abfahrt的博客 186

设计模式——桥接模式的学习与理解

什么是桥接模式 桥接模式是指将抽象和实现分离开来,使得它们可以保持独立存在。这个模式基于类的最小设计原则(最少的修改代码),多用于替代多层继承方案,以减少类的个数,防止类爆炸。 对照——传统的多层继承方案 想要学习一个设计模式,首要的就是了解这个设计模式解决什么。 我们假设一个案例: 要开发一套手机图片浏览App,他可以在ios,Android上使用,可以查看JPG,PNG格式的文件。 如果采用传...

qq_44025396的博客 476

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

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ...

江左煤郎的博客 177
上一篇: 学习设计模式之单例模式
下一篇: 学习设计模式之命令模式
一定要细心
博客等级 码龄12年 11粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值