浅谈Java设计模式——桥接模式(Bridge)

【设计模式】Java 设计模式之桥接模式(Bridge) 本文概述了桥接设计模式的核心原理和应用场景。桥接模式通过分离抽象部分和实现部分,使得两者能够独立变化,从而提升了系统的灵活性和可扩展性。它特别适用于那些需要在多个维度上进行变化,或者要求抽象和实现独立演进的场景。实现桥接模式时,需明确抽象与实现的关系,设计稳定的抽象接口,并保持实现细节的独立性。尽管桥接模式可能增加系统的复杂性并带来一定的性能损失,但其带来的灵活性通常能够弥补这些不足。展望未来,桥接模式将继续在软件开发中发挥重要作用,结合其他技术和设计模式,共同构建高效、灵活且可靠的系统架构。 阅读详情

一、概述

        将抽象部分与它的实现部分分离,使它们都可以独立地变化。如果说某个系统能够从多个角度来进行分类,且每一种分类都可能会变化,那么我们需要做的就是讲这多个角度分离出来,使得他们能独立变化,减少他们之间的耦合,这个分离过程就使用了桥接模式。所谓桥接模式就是讲抽象部分和实现部分隔离开来,使得他们能够独立变化。桥接模式将继承关系转化成关联关系,封装了变化,完成了解耦,减少了系统中类的数量,也减少了代码量。

二、使用场景

1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。

2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 

3.对一个抽象的实现部分的修改应对客户不产生影响,即客户的代码不必重新编译。 

4.正如在意图一节的第一个类图中所示的那样,有许多类要生成。 这样一种类层次结构说明你必须将一个对象分解成两个部分。

5.你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。

三、参与者

1.Abstraction 定义抽象类的接口。 维护一个指向Implementor类型对象的指针。 

2.RefinedAbstraction 扩充由Abstraction定义的接口。 

3.Implementor 定义实现类的接口,该接口不一定要与Abstraction的接口完全一致。 事实上这两个接口可以完全不同。 一般来                                            讲, Implementor接口仅提供基本操作,而Abstraction则定义了基于这些基本操作的较高层次的操作。

4.ConcreteImplementor 实现Implementor接口并定义它的具体实现。

四、类图

五、示例代码

1.Abstraction:

/**
 * Abstractor类
 * @author zhipeng_Tong
 */
public abstract class Person {
    private Clothing clothing;
    private String type;

    public Clothing getClothing() {
        return clothing;
    }

    public void setClothing(Clothing clothing) {
        this.clothing = clothing;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public abstract void dress();
}

 2.RefinedAbstraction:

public class Man extends Person {
    public Man() {
        setType("男人");
    }

    @Override
    public void dress() {
        Clothing clothing = getClothing();
        clothing.personDressCloth(this);
    }
}

public class Lady extends Person {
    public Lady() {
        setType("女人");
    }

    @Override
    public void dress() {
        Clothing clothing = getClothing();
        clothing.personDressCloth(this);
    }
}

3.Implementor:

/**
 * Implementor类:Clothing
 * @author zhipeng_Tong
 */
public abstract class Clothing {
    public abstract void personDressCloth(Person person);
}

4.ConcreteImplementor:

/**
 * ConctreteImplementor
 * @author zhipeng_Tong
 */
public class Jecket extends Clothing {
    @Override
    public void personDressCloth(Person person) {
        System.out.println(person.getType() + "穿马甲");
    }
}

/**
 * ConctreteImplement
 * @author zhipeng_Tong
 */
public class Trouser extends Clothing {
    @Override
    public void personDressCloth(Person person) {
        System.out.println(person.getType() + "穿裤子");
    }
}

5.测试代码

public class Client {
    public static void main(String[] args) {

        Person man = new Man();

        Person lady = new Lady();

        Clothing jacket = new Jecket();

        Clothing trouser = new Trouser();

        jacket.personDressCloth(man);
        trouser.personDressCloth(man);

        jacket.personDressCloth(lady);
        trouser.personDressCloth(lady);
    }
}

运行结果:

男人穿马甲
男人穿裤子
女人穿马甲
女人穿裤子

 

PHPJava Bridge:PHP与Java的集成利器 在当今多变的互联网技术环境中,开发者经常需要在同一个项目中整合多种编程语言以实现更复杂的功能。PHPJava Bridge作为一种特殊的桥接技术,允许在PHP环境中无缝使用Java对象和库。这使得开发者可以利用PHP快速开发的优势,并同时访问Java丰富的库和框架,实现了在PHP与Java之间的高效协作。本文将详细介绍PHPJava Bridge的工作原理,应用场景,以及如何在项目中进行安装和配置,以帮助读者高效集成和利用这一技术。 阅读详情

相关推荐

深度学习Halcon中GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢,通过设置硬件参数的解决方法

深度学习Halcon中GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢,通过设置硬件参数的解决方法 前言 在训练自己模型的时候,会遇到GPU显存利用率高,但GPU、CPU利用率较低,导致模型训练速度很慢的问题。这个问题一方面是由于硬件没有设置到最佳工作状态,另一方面是代码中参数没有设置好。最近在跑Halcon DL遇到这个问题,而Halcon不像开源的几个框架那样自由,代码封装的比较多。所以遇到这种问题,只能在参数最优的情况下,通过设置硬件参数来提升性能。 当然,在跑DL之前,无论什么框

ZiLiangQin的博客 9914

java bridge 模式_Java设计模式之桥模式(Bridge模式)介绍

Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合。为什么使用桥模式通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种:1.这多个具体实现之间恰好是并列的,如前面举例,打桩,有两个concrete class:方形桩和圆形桩;这两个形状上的桩是并列的,没有概念上的重复,那么我们只要使用继承就可以了。2.实际应用上,...

weixin_39647471的博客 833

腾讯云运维工程师认证TCA--真题(最新2022.11)

解析:云原生应用的12要素,1.基准代码:一份基准代码,多份部署;解析:腾讯云主账号具备对其名下资源(包括存储桶)的最大权限,您虽然可以在存储桶策略中限制几乎所有操作,但主账号始终具备 PUT Bucket Policy 操作的权限,主账号调用该操作不检查存储桶策略。解析:瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。解答:云原生五大关键技术:微服务、容器化、DevOps、持续交付。

e1210101的博客 9915

JAVA--桥接器

Java中的桥接器(Bridge)通常指的是一种设计模式,称为桥接模式(Bridge Pattern)。桥接模式是一种结构型设计模式,用于将抽象部分与其实现部分分离,使它们可以独立地变化。这种模式通过定义一个桥接接口来实现,这个接口充当抽象和实现之间的桥梁。

qq_56438516的博客 1366

LCD驱动芯片——BL55072A驱动程序

初始化子程序: START 0x7C; I2C子地址 0xEA;ICSET,软件复位芯片 0xC0;MODSET,关显示 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8;ICSET,清复位bit1 STOP 显示刷新子程序: START 0x7C;I2C子地址 0xF0;BLKCTL,关闪烁 0xA3;DISCTL,80Hz Line inversion,High Power mode 0xE8或0xEC;ICSE

love421的博客 3175

单电源运放偏置电压设计:如何避免信号失真

本文详细解析了单电源运放偏置电压设计的关键技术,以LM358为例,探讨如何通过1/2 VCC偏置避免信号失真。文章从基本原理出发,揭示了双端偏置的黄金法则,并提供了常见设计陷阱的解决方案和进阶调试技巧,帮助工程师实现高保真信号放大。

weixin_29266647的博客 292

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

桥接模式的主要思想是将一个对象的实现部分与它的抽象部分分离开来,使它们可以独立地变化。桥接模式通过把实现和抽象解耦,使得它们能够各自独立地变化,而不会互相影响。在这种方式下,抽象和实现可以以各自的方式变化,而不会影响到对方。桥接模式常用于多维变化的系统中,可以帮助开发者更好地应对变化。

小虎哥的技术博客 307

二、租用AutoDL服务器与连接教程

点击右上角控制台,选择【租用新的实例】;,我这里使用的是xshell和xftp工具(自行下载)。打开本地目录和服务器目录,直接拖动文件。

zzf021122的博客 1326

设计模式-桥接模式

结构型设计模式结构型模式主要总结了一些类和对象组合在一起的经典结构,这些经典结构可以解决对应特定场景的问题.一共包括七种:代理模式、桥接模式、装饰者模式、适配器模式、门面(外观)模式、组合模式、和享元模式。

hey_lie的博客 375

深度学习-161-Dify工具之对比使用工作流和聊天流生成图表可视化的html文件

分别使用聊天流和工作流进行数据分析结果的可视化,生成html文件。聊天流可以配置带记忆,这样就可以多次交互优化结果。

qq_20466211的博客 1709

华为OD机试真题2026双机位C卷 Python&JS 实现【明日之星选举】

给定一组选票votes。votes[i]代表第 i 张选票的内容,包含一个字符串"zhangsan,hanmei",表示推荐zhangsan为明日之星,反对 hanmei 称为明日之星。赞成或反对使用逗号(,)分割。 给定一个数组n,表示最后将筛选出赞成票最多的n个人,如果赞成票相同,则反对票越少,排序越靠前;如果赞成票和反对票都相同,则按照姓名字典序升序排序。

MISAYAONE的博客 318

浅谈Java设计模式(十)桥接模式(Bridge)

前言: 桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。我们来看看关系图:

比较喜欢、笑的博客专栏 1万+

openclaw中文版安装教程和常用命令

OpenClaw 中文版的和,涵盖本地一键部署、Docker 隔离部署、阿里云极速部署三种方式,以及六大类高频命令,方便你快速上手和日常运维。

suny8的专栏 2995

浅谈JAVA设计模式之——桥接模式(Bridge)

一、概述 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 二、适用性 1.你不希望在抽象和它的实现部分之间有一个固定的绑定关系。 例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换。 2.类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。 这时Bridge模式使你可以对不同的抽象接口和实现部分进行组合,并分别对它们进行扩充。 3.对一个抽象的实现部分

冰河的专栏 8225

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

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

【设计模式——学习笔记】23种设计模式——桥接模式Bridge(原理讲解+应用场景介绍+案例介绍+Java代码实现)

讲解桥接模式的思想,介绍其常见的应用场景,举例说明桥接模式的实现方式

我只管埋头前行,剩下的交给时间。 3290

Devexpress16.2.6破解工具

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

java bridge_java 实现Bridge模式(转)

原文:http://chjking.blog.163.com/blog/static/6439511120081152534252/看了网上一些关于咖啡加奶的例子,觉得真是天下文章一大抄,不管好的坏的都照搬,于是在原有的基础上进行了重新编写,代码也已经过测试。Bridge定义 :将抽象和行为划分开来,各自独立,但能动态地结合。这句话是对的,但理解起来较为困难。可以这么理解,抽象是一个事物的本身的特...

weixin_29066121的博客 519

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...

js键盘事件中的键码对照表

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。BAT面试经验实战系列:Spring全家桶+Redis等其他相关的电子书:源码+调优面试真题:《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》

2401_84046577的博客 954

Java 设计模式之Bridge桥接模式

将抽象和具体实现两个维度分离,让他们独立发展,并且在抽象类里聚合一个具体实现,通过聚合替代继承,用于解决类爆炸的问题。 这种模式要求对系统的抽象的理解和设计难度都比较大。 例子: 这里要对花,气球等装饰物进行显示,可以显示一个装饰物,也可以显示多个装饰物,那么将装饰物作为具体实现,将显示作为抽象类,在抽象类里有一个装饰物的引用,对抽象类进行扩展可以进行多次显示,对具体实现扩展为不同类型装饰物。 Display,NumberDisplay DisplayImpl, FlowerDisplayImpl

风香枫 272

Java桥接模式(bridge)

  本文介绍下Java设计模式中的桥接模式 桥接模式 多层继承结构   在现实生活中比如商城中以电脑为例来说,如何处理电脑销售分类的问题,我们可以使用多层继承结构实现这种场景 问题 1.扩展性问题 1>. 如果要增加一个新的扩展类型:智能手机,则要在每个品牌下增加一个新类 2>. 如果要新增加一个品牌,则这个品牌下要增加各个类型的电脑 2.违反单一职责原则 一个类有两个引起该类变化的...

波波烤鸭的博客 3634

Java桥接模式

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

qq_56892136的博客 2373

java桥_Java桥模式(Bridge模式)

Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合。为什么使用桥模式通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种:这多个具体实现之间恰好是并列的,如前面举例,打桩,有两个concrete class:方形桩和圆形桩;这两个形状上的桩是并列的,没有概念上的重复,那么我们只要使用继承就可以了。实际应用上,常常有可...

weixin_39936380的博客 276

【Java设计模式】喝一杯Java茶吧,带你掌握桥接模式(Bridge)

小编精心为大家准备了一手资料以上Java高级架构资料、源码、笔记、视频。Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术【附】架构书籍BAT面试的20道高频数据库问题解析Java面试宝典Netty实战算法BATJ面试要点及Java架构师进阶资料《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_83329718的博客 869

php-java-bridge的使用

一、环境 操作系统:windows java版本:1.8 php-java-bridge版本:7.2.1(最新版本) 服务器:nginx(用什么服务器应该不影响的) 二、操作 1、安装java:这个不用多说,网上很多教程,跟着操作安装和配置环境变量就可以了。 2、php环境:这个也有很多教程,相信如果需要看这个贴子的人,php环境是已经配置好了的。 3、解压php-java-bridge的压缩文件: a.得到一个JavaBridge.war文件,将后缀改为jar b.再解压刚刚的ja

UsbFor的博客 2717

Java设计模式之结构型-桥接模式 (Bridge)

结构型-桥接模式 (Bridge) ????文章示例代码???? 附链 你也可以在这些平台阅读本文: 语雀 个人博客 定义 将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。 桥接模式是通过组合的方式建立两个类之间的联系,而不是通过继承。 四个角色 桥接模式中主要有以下四个角色: 抽象化角色Abstraction:定义抽象类,同时包含一个对实现化对象的引用。 扩展抽象化角色Refined A...

Horace's Blog 549

Java设计模式——桥接模式(Bridge)

桥接模式 简介 桥接模式的主要目的是将类的功能层次结构和类的实现层次结构连接起来。 类的功能层次结构 父类具有基本功能 子类中加入新的功能 这种为了增加新的功能,而产生的层次结构叫做类的功能层次结构 类的实现层次结构 父类通过定义抽象方法来定义接口 子类通过实现具体方法来实现接口 这时产生的层次接口叫做类的实现层次结构 当我们编写子类的时候,需要先确定自己的意图,“是增...

Mirt_的博客 453

3分钟快速搞懂Java的桥接方法

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

2401_84049061的博客 687
上一篇: 浅谈Java设计模式——策略模式(Strategy)
下一篇: 浅谈Java设计模式——适配器模式(Adapter)
IdealSpring
博客等级 码龄8年 9粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值