java 23种常用设计模式之桥接模式(Bridge)

java设计模式-桥接模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 立即下载

王XX,万XX小王子,富二代,国民老公……大家都听说过我就不对他进行简介一番了!他老爸的将来都是他的,至于他清不清楚自己家到底有多少公司,涉及多少个行业,善良的王XX只要知道这些公司是不是赚钱,赚了多少。有人会用善良来形容商人的吗?这个貌似什么唯利是图之类的多一些……

这次要讲的是桥接模式,和这些茶余饭后的闲聊有什么关系呢?

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


还是没说桥接模式和王XX有什么关系呀?!

有关系的,王XX一开始有个袜子公司,还有个手套公司,天这么冷,也懒得每个公司都走一趟,但是又想知道这两家公司到底赚不赚钱,然后,然后看代码吧!

package com.freedom.bridge;

public abstract class Computers {
	protected abstract void produce();
	protected abstract void sell();
	public void makeMoney(){
		this.produce();
		this.sell();
	}
}

package com.freedom.bridge;

public class SocksComputer extends Computers{

    @Override
    protected void produce() {
        System.out.println("这个公司是生产袜子……");
        
    }

    @Override
    protected void sell() {
        System.out.println("袜子大卖……");
        
    }
    
    public void makeMoney(){
        super.makeMoney();
        System.out.println("袜子超赚钱……");
    }

}
package com.freedom.bridge;

public class GlovesComputer extends Computers{

    @Override
    protected void produce() {
        System.out.println("这个公司是生产手套的……");
        
    }

    @Override
    protected void sell() {
        System.out.println("虽然没什么戴手套的习惯,但是天这么冷还是有市场的……");
        
    }
    
    public void makeMoney(){
        super.makeMoney();
        System.out.println("手套赚一点点……");
    }

}
package com.freedom.bridge;

public class WangXX {

    public static void main(String[] args) {
        System.out.println("王XX视察袜子公司:");
        SocksComputer sc = new SocksComputer();
        sc.makeMoney();
        
        System.out.println("\n王XX视察手套公司:");
        GlovesComputer gc = new GlovesComputer();
        gc.makeMoney();
       
    }

}
/*
运行结果:
王XX视察袜子公司:
这个公司是生产袜子……
袜子大卖……
袜子超赚钱……

王XX视察手套公司:
这个公司是生产手套的……
虽然没什么戴手套的习惯,但是天这么冷还是有市场的……
手套赚一点点……
*/
一目了然,袜子和手套都赚了不少哦!王XX可乐了,他说我不能满足与这一丢丢,老爸不是还有个围巾公司吗?天这么冷,围巾的销量应该也不错,再来看看围巾公司怎么样了……

package com.freedom.bridge;

public class ScarfComputer extends Computers{

	@Override
	protected void produce() {
		System.out.println("这个公司是生产围巾的……");
		
	}

	@Override
	protected void sell() {
		System.out.println("虽然没什么戴围巾的习惯,但是天还是这么冷,会大卖吧……");
		
	}
	
	public void makeMoney(){
		super.makeMoney();
		System.out.println("围巾赚的还真不少……");
	}

}
<pre name="code" class="java">public class WangXX {

    public static void main(String[] args) {
       System.out.println("\n王XX视察围巾公司:");
       ScarfComputer scc = new ScarfComputer();
       scc.makeMoney();
       
    }

}
/*
运行结果:
王XX视察围巾公司:
这个公司是生产围巾的……
虽然没什么戴围巾的习惯,但是天还是这么冷,会大卖吧……
围巾赚的还真不少……
*/ 

 富二代真好!神马都不用做,每天看看老爸的这些公司赚了多少钱就行了! 

这就是桥接模式啦!把事物和其具体实现分开,使他们可以各自独立的变化。王XX可不是古代地主家的呆儿子,虽然老爸很有钱,如果钱不是源源不断的来,总有一天会挥霍完的。所以不能闲着,夏天不冷了,袜子公司还可以继续大生产丝袜,但是围巾、手套基本没人会买,要充分利用公司资源的话,要针对季节适当转型才行。先试一下吧围巾公司转型生产小短裙怎么样呢?让公司直接和产品挂钩,冬天想生产围巾就生产围巾,到了夏天就生产小短裙,这个的话一年365天每天都能赚大钱岂不是很赞!看代码:

package com.freedom.bridge;

public abstract class Products {
    protected abstract void beProduced();
    protected abstract void beSold();
}
package com.freedom.bridge;
public abstract class Computers2 {
   private Products product;
   public Computers2(Products product){
      this.product = product;
      public void makeMoney(){
         this.product.beProduced();
         this.product.beSold();
      }
  }
}

package com.freedom.bridge;

public class Skirts extends Products{

    @Override
    protected void beProduced() {
        System.out.println("小短裙正在生产了一大波……");
        
    }

    @Override
    protected void beSold() {
        System.out.println("夏天来了!小短裙正在热卖……");
        
    }

}

package com.freedom.bridge;

public class ScarfComputerToSkirts extends Computers2{

    
    public ScarfComputerToSkirts(Skirts skirts) {
        super(skirts);
    }

    public void makeMoney(){
        super.makeMoney();
        System.out.println("小短裙在夏天很赚钱……");
    }

}

package com.freedom.bridge;

public class WangXX {

    public static void main(String[] args) {
        
        System.out.println("\n王XX视察围巾公司转型成小短裙后的情况:");
        ScarfComputerToSkirts scts = new ScarfComputerToSkirts(new Skirts());
        scts.makeMoney();
    }

}
/*
运行结果:
王XX视察围巾公司转型成小短裙后的情况:
小短裙正在生产了一大波……
夏天来了!小短裙正在热卖……
小短裙在夏天很赚钱……
*/ 

 
 这里ScarfComputerToSkirts多了个有参构造函数,其目的是要继承的子类都必选重写自己的有参构造函数,把产品类传递进来。ScarfComputer类和ScarfComputerToSkirts类的区别是在构造函数上,ScarfComputer类比较明确,只要Scarf, 一个类尽可能少的承担职责,既然ScarfComputer类已经非常明确只生产Scarf产品,那我要生产Skirts怎么办呢?ScarfComputerToSkirts就可以解决问题,它是生产什么类型是由构造函数的参数决定的。我要生产Skirts,那么我就给它new一个Skirts,当然也可以new一个Scarf,这里就不罗嗦了! 

小结一下:换个新鲜点的直接画个图吧!



Computer2(Product product)充分实现了公司和产品之间的关心,有了它再也不用担心公司转型有多麻烦了!夏天生产小短裙Skirts,冬天还是依旧生产Scarf,这个只需要继承products,然后ScarfComputer(Scarf scarf)就OK了!桥接模式的优点也就一目了然。继承不能说它不好,但是有缺点的,为了扬长避短,对于比较明确不发生变化的,则通过继承来完成,若不能确定是否会发生变化的,那就认为是会发生变化,则通过桥梁模式来解决。

下载源码:http://download.youkuaiyun.com/detail/github_22022001/8328823








2024年最新双摄像头的实时视频拼接及目标跟踪(一)_监控视频拼接实时(1),网络相关+C C++三方库的源码分析+数据结构与算法 opencv中采用了SURF,ORB进行特征点提取,如果装的是opencv2.0版本,则可以直接用SURF,如果是3.0版本,则需要下载相应的contrib库进行安装。原理不赘述,给出其实验结果对比和分析,原始图像1SURF特征点提取网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加戳这里获取一个人可以走的很快,但一群人才能走的更远! 阅读详情

相关推荐

128x64 OLED屏的救星:手把手教你用纯C实现轻量级多级菜单

本文针对资源受限的单片机开发场景,提供了一套用纯C语言实现128x64 OLED屏轻量级多级菜单的完整方案。该方案摒弃了传统的树形指针结构,创新性地采用哈希表进行菜单项管理,核心代码不足200行,内存占用极低,逻辑清晰且易于维护。文章详细阐述了架构设计、实战演练及性能优化技巧,是STM32、ESP8266等小内存MCU项目的理想选择。

table的专栏 227

JAVA设计模式结构型模式

结构模型:适配器模型、桥接模型、过滤器模型、组合模型、装饰器模型、外观模型、享受元模型和代理模型。

JAVA领域优质创作者,基于分片网络查询方法专利发明者。 1398

Vivado安装教程:多版本共存的配置技巧

详解Vivado安装教程中的多版本共存配置技巧,帮助用户在同一系统中管理不同版本的Vivado开发环境,提升开发效率与兼容性,适用于需要切换版本的FPGA开发者。

weixin_35257663的博客 1775

桥接模式

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

ThinkWon的博客 8081

机器人动力学与控制学习笔记(一)————机器人控制概述

一、概述 1、机器人控制的目的 对自由运动机器人来说,控制的目的是要控制机器人手端的位置和姿态(以后统一简称为位姿),即所谓位置控制问题。这时希望机器人手端所达到的位置称为期望位置或期望轨迹。期望轨迹可以在机器人任务空间中给出,也可以通过逆运动学关系转化为机器人关节空间中的期望轨迹。期望轨迹通常有两种形式:一种是一个固定位置(即固定点),另一种是一条随时间连续变化的轨迹。自由运动机器人位置控制的目的,是要使机器人手端从任意起始位置出发都能到达期望轨迹。当期望轨迹是固定点时的位置控制称为定...

冰与火的青春的博客 6882

Vue项目实战:5分钟搞定高德地图离线部署(附避坑指南)

本文详细介绍了在Vue项目中实现高德地图离线部署的完整方案。针对内网或网络隔离环境,通过获取并改造JSAPI文件、下载组织地图瓦片数据,并集成vue-amap组件,实现地图功能的本地化运行。文中提供了核心代码、避坑指南及性能优化建议,帮助开发者快速构建稳定可靠的离线地图应用。

data3的博客 935

Java设计模式——单例模式,桥接模式,组合模式

Java设计模式之单例模式,桥接模式,组合模式

qq_45944185的博客 405

端到端自动驾驶的精准测试场景开发

1. 背景介绍 自动驾驶技术的发展正在改变交通运输的未来,然而,要实现安全可靠的自动驾驶,需要进行大量的测试和验证。端到端自动驾驶系统的测试场景开发是实现这一目标的关键。本文将详细介绍端到端自动驾驶的精准测试场景开发,包括核心概念、算法原理、数学模型、项目实践,以及未来发展趋势。 2. 核心概念与联系

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1319

设计模式之桥接模式

设计模式之桥接模式 桥接模式定义: 桥接模式(Bridge)是一种结构型设计模式。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 实现指的是抽象类和它的派生类用来实现自己的对象。 桥接模式核心意图就是把实现独立出来,让它们各自变化,使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。 为什么要优先使用合成/

weixin_45783387的博客 174

uniapp(vue3)- 详解安装/使用pinia报错reportJSException >>>> exception function:createInstanceContext, excepti

uniapp vue3 pinia报错reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack -> at useStore,H5网页,微信小程序,安卓App,苹果App,nvue,uniapp安装使用pinia出现报错at useStore,uniapp+vue3+ts 使用pinia报

🏆 前端领域优质创作者 4048

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

康耐视visionpro-CogCreateSegmentAvgSegsTool操作工具详细说明

视觉人机器视觉的博客 1480

Java实现二十三种设计模式(二)—— 七种结构型模式 (上)——适配器模式、桥接模式、组合模式

Java实现二十三种设计模式(二)—— 七种结构型模式 (上)——适配器模式、桥接模式、组合模式

qq_41824825的博客 691

OpenCV开发笔记(〇):使用mingw530_32编译openCV3.4.1源码,搭建Qt5.9.3的openCV开发环境

欢迎技术交流和帮助,提供IT相关服务,索要源码请联系博主QQ: 21497936,若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.youkuaiyun.com/qq21497936 本文章博客地址:https://blog.youkuaiyun.com/qq21497936/article/details/79641510 目录 OpenCV开发笔记(一):使用mingw530_32编译...

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 5万+

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

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

微笑听雨 2838

ssm框架搭建

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

Meteors.的博客 1225

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 中的 23 种设计模式详解

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

微笑听雨 7万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

scorpio的博客 1796

Java-23个设计模式 Bridge桥接模式

Bridge 将抽象部分(业务功能)与它的实现部分分离(平台分离),使它们可以独立地变化。 ① 创建软件与平台的接口SoftWareImpl(其实现类(iOS或者Android)会实现与软件连接的接口) /** * 软件与平台的接口 */ public interface SoftWareImpl { // 连接接口 public void connect(); ...

weixin_42321815的博客 150

【Java中23种面试常考的设计模式之桥接模式(Bridge)---结构型模式】

【Java中23种面试常考的设计模式之桥接模式(Bridge)—结构型模式】23种设计模式持续更新汇总中。接下来我们要进行学习的是:【Java中23种面试常考的设计模式之桥接模式(Bridge)—结构型模式】。抽象类(Abstraction): 维护了Implementor,即它的实现子类Concretelmplementor,二者是聚合关系,Abstraction充当桥接类。桥接模式: 将抽象部分与实现部分分离,使它们都可以独立的变化。Implementor: 行为实现类的接口。

Coder_ljw的博客 856

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

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

Hanson的博客 1889

设计模式系列【23】:桥接模式(Bridge模式)详解

在现实生活中,某些类具有两个或多个维度的变化,如图形既可以按形状分,又可按颜色分。如何设计类似于Photoshop这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m种形状和n种颜色的图形就有m × n种,不但对应的子类很多,而且扩展困难。 当然,这样的例子还有很多,如不同颜色和字体的文字,不同品牌和功率的汽车、不同性别和职业的男女、支持不同平台和不同文件格式的媒体播放器等。如果用桥接模式就能很好的理解这样的问题。 桥接模式的定义与特点 ...

单枪匹码 2223

GOF23设计模式之桥接模式-Bridge

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

zhengyong14350的博客 244

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

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

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

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

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

3万+

23种设计模式:16桥接模式(Bridge)

介绍 哈哈,Bridge和我的昵称差不多! 桥接模式其实很简单的,网上很多学习资料大概是为了介绍合成/聚合复用原则或者是为了说清楚桥接模式的好处,都会先用一个特别复杂的错误案例,然后将学习的同学脑袋弄晕,然后才开始介绍桥接模式。 那么,今天我就直接说举例说桥接模式,然后再举错误的例子,最后介绍合成/聚合原则 案例分析 假设我们希望分别从“用途”和“品牌”2个方面去创建汽车,比如: 用途(Purpose): 家用、赛道、商务…… 品牌(Brand):特斯拉、宝马、BYD…… 如果是桥接模式,创建方式如

yuanyuneixin1的专栏 166
上一篇: java 23种常用设计模式之外观模式(Facade)
下一篇: java 23种常用设计模式之组合模式(Composite)
freedom1993
博客等级 码龄12年 25粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值