结构型——桥接模式(Bridge)day08

linux网桥浅析 阅读详情

桥接模式基本介绍

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

桥接模式原理图

在这里插入图片描述
说明:

  • Client类:桥接模式的调用者
  • 抽象类(Abstraction) :维护了Implementor/ 即它的实现类ConcreteImplementorA…二者是聚合关系, Abstraction充当桥接类
  • RefinedAbstraction:是Abstraction 抽象类的子类
  • Implementor:行为实现类的接口.
  • ConcreteImplementorA/B :行为的具体实现类
  • 从UML图:这里的抽象类和接口是聚合的关系,其实调用和被调用关系

手机操作问题

在这里插入图片描述
在这里插入图片描述

问题分析

  • 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。
  • 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.
  • 解决方案-使用桥接模式

桥接模式实现手机问题

使用桥接模式改进传统方式,让程序具有搞好的扩展性,利用程序维护

  1. 应用实例说明(和前面要求一样)
  2. 使用桥接模式对应的类图

在这里插入图片描述

package com.xhl.Bridge;

public interface Brand {
	void open();
	void close();
	void call();
}
package com.xhl.Bridge;

public class Vivo implements Brand {

	@Override
	public void open() {
		// TODO Auto-generated method stub
		System.out.print("Vivo 手机开机\t");
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		System.out.print("Vivo 手机关机\t");
	}

	@Override
	public void call() {
		// TODO Auto-generated method stub
		System.out.print("Vivo 手机打电话\t");
	}

}

package com.xhl.Bridge;

public class XiaoMi implements Brand {

	@Override
	public void open() {
		// TODO Auto-generated method stub
		System.out.print("XiaoMi 手机开机\t");
	}

	@Override
	public void close() {
		// TODO Auto-generated method stub
		System.out.print("XiaoMi 手机关机\t");
	}

	@Override
	public void call() {
		// TODO Auto-generated method stub
		System.out.print("XiaoMi 手机打电话\t");
	}

}

package com.xhl.Bridge;

public abstract class Phone {
	private Brand brand;//组合品牌

	public Phone(Brand brand) {
		super();
		this.brand = brand;
	}
	
	protected void open() {
		this.brand.open();
	}
	protected void close() {
		this.brand.close();
	}
	protected void call() {
		this.brand.call();
	}
}
package com.xhl.Bridge;

public class FoldedPhone extends Phone {

	public FoldedPhone(Brand brand) {
		super(brand);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void open() {
		// TODO Auto-generated method stub
		super.open();
		System.out.println("折叠样式手机");
	}

	@Override
	protected void close() {
		// TODO Auto-generated method stub
		super.close();
		System.out.println("折叠样式手机");
	}

	@Override
	protected void call() {
		// TODO Auto-generated method stub
		super.call();
		System.out.println("折叠样式手机");
	}
	
}
package com.xhl.Bridge;

public class UpRightPhone extends Phone {

	public UpRightPhone(Brand brand) {
		super(brand);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void open() {
		// TODO Auto-generated method stub
		super.open();
		System.out.println("直立样式手机");
	}

	@Override
	protected void close() {
		// TODO Auto-generated method stub
		super.close();
		System.out.println("直立样式手机");
	}

	@Override
	protected void call() {
		// TODO Auto-generated method stub
		super.call();
		System.out.println("直立样式手机");
	}
	
}
package com.xhl.Bridge;

public class BridgeDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Phone phone1 = new FoldedPhone(new XiaoMi());
		phone1.open();
		phone1.close();
		phone1.call();
		
		System.out.println("================");
		
		Phone phone2 = new UpRightPhone(new Vivo());
		phone2.open();
		phone2.close();
		phone2.call();
		
		
		System.out.println("================");
		
		Phone phone3 = new UpRightPhone(new XiaoMi());
		phone3.open();
		phone3.close();
		phone3.call();
		
		System.out.println("================");
		
		Phone phone4 = new FoldedPhone(new Vivo());
		phone4.open();
		phone4.close();
		phone4.call();
	}

}

在这里插入图片描述

总结

  1. 实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。
  2. 对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。
  3. 桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。
  4. 桥接模式的引入增加 了系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
  5. 桥接模式要求正确识别出系统中两个独立变化的维度(抽象、和实现),因此其使用范围有一定的局限性,即需要有这样的应用场景。
  6. 桥接模式其它应用场景:对于那些不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统,桥接模式尤为适用.

常见场景:

  1. JDBC驱动程序
  2. 银行转账系统
    转账分类:网上转账,柜台转账,AMT转账
    转账用户类型:普通用户,银卡用户,金卡用户。
  3. 消息管理
    消息类型:即时消息,延时消息
    消息分类:手机短信,邮件消息,QQ消息…
LTE承载的关键技术:二三层桥接 LTE作为下一代无线发展的风向标,不仅在带宽方面可以满足高清视频业务的发展,还可以支持更多的宽带用户,真正实现无线宽带化。承载网作为电信网络的基础,需要思考如何有效支撑无线网络的发展和演进。 立即下载

相关推荐

ICC2 实战秘籍:create_workspace 命令全解析

必选项:工作区名称,这可是创建工作区的 “身份证”,必不可少。技术数据选项匹配:优先考虑用 -technology 直接加载技术文件,这是获取最新、最准确技术数据的首选路径;要是已经有合适的技术库了,那 -use_technology_lib 引用现有技术库也能快速上手。精度设置优先规则:技术文件自动配置排在第一位,能自动适配就别手动操心;要是自动配置不理想,那就显式指定 scale_factor;实在没要求,就用默认配置,但得清楚它的精度限制。

weixin_50820814的博客 1124

桥接模式

一、桥接模式的基本介绍 桥接模式是指将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。桥接模式基于类的最小设计原则,通过封装、聚合及继承等行为让不同的类承担不同的职责。它主要特点是把抽象(abstraction)与行为实现(implemention)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。 二、桥接模式原理 桥接模式原理类图如下所示: 原理类图...

学习记录 1144

Vue2项目实战:vue2-org-tree实现动态组织架构图

本文详细介绍了如何在Vue2项目中使用vue2-org-tree组件实现动态、可交互的组织架构图。内容涵盖从快速安装、基础渲染到核心功能实战,包括水平布局、节点展开折叠、响应式数据绑定、深度自定义节点内容以及事件处理。同时提供了性能优化、样式覆盖等避坑指南,并通过一个完整的企业级Demo展示了如何打造功能丰富的架构图,助力高效开发后台管理系统。

weixin_28040125的博客 522

【设计模式系列16】桥接模式原理及示例分析

桥接模式原理及示例分析前言什么是桥接模式桥接模式示例桥接模式角色分类桥接模式应用场景桥接模式优缺点总结 前言 本文主要介绍桥接模式的原理,并会结合示例进行分析。桥接模式其实和组合有点相似,桥接模式也是通过组合来实现的,但是桥接模式和组合模式的侧重点不一样,接下来就让我们一起来看看桥接模式。 什么是桥接模式 桥接模式(Bridge Pattern)也称之为桥梁模式,接口(Interface)模式或者柄体(Handle and Body)模式。 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立的变化。桥

zwx900102的博客 3397

汽车BMS技术分享及其HIL测试方案

在全球碳中和目标的战略驱动下,新能源汽车产业正以指数级速度重塑交通出行格局。动力电池作为电动汽车的"心脏",其性能与安全性不仅直接决定了车辆的续航里程、使用寿命等关键指标,更深刻影响着消费者对电动汽车的市场接受度。而电池管理系统(Battery Management System, BMS)是动力电池安全运行与性能释放的核心技术支撑。

Speedgoat的博客 2684

基础的pdf病毒木马

基础的pdf病毒木马 环境: 攻击机:Kali 目标操作系统:Windows 10或Windows 7 (关闭防火墙和安全软件) 目标软件:Adobe Reader 8.1.2 msf框架搜索:adobe-pdf 1.打开msfconsole 2.搜索 adobe_pdf模块 3.加载攻击模块并设置payload 4.运行生成pdf 5.将pdf拖入到win10 6.打开msf,加...

小小猪的博客 4623

桥接模式?NAT模式?深入原理,一文带你彻底搞清楚!

VMWare虚拟机提供了三种网络模式:·bridge(桥接模式)·NAT(网络地址转换模式)·host-only(主机模式)安装好虚拟机以后,在网络连接里面可以看到多了两块网卡:【ps:为什么没有 桥接模式的网卡?看了后面就明白了】通过在VMware虚拟网网络编辑器中,也可以看到有三个虚拟交换机分别对应不同的网络模式:·VMnet0:用于桥接模式下的虚拟交换机【需要管理员权限】·VMnet1:...

方才coding 6968

睿抗机器人魔力元宝在完成任务过程中如何使机械臂先到达白色盒子上方而不是先到达工作台?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1378

设计模式之桥接模式:原理、实现与应用

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立变化。桥接模式通过组合而不是继承来实现抽象与实现的解耦,从而提高了系统的灵活性和可扩展性。桥接模式是设计模式中用于分离抽象与实现的经典模式之一,适用于需要将抽象部分与实现部分分离的场景。通过掌握桥接模式的原理、实现方式以及最佳实践,你可以在实际开发中更好地应用这一模式。希望本文能为你的设计模式学习之旅提供一些实用的指导!如果你有具体的需求或想要深入探讨某个主题,请告诉我,我可以进一步调整内容!

wenbin_java的博客 1303

Allegro技巧----相同模块复用实现快速布局

使用Allegro软件进行PCB Layout设计时,当电路图中有很多路相同的模块,使用模块复用的的操作方法,可以显著提高工作效率,同时也可以使PCB布局在整体上显得美观。 如图,有8个相同的ADC采样电路模块,它们在原理图中的电路也是一样的,对于这多个相同的电路模块,如果一个个元器件布局很明显做了很多重复机械的劳动,效率低下;但是强大的Allegro软件早就考虑到了这点,只需要在PCB中做好其中的一个,则其余相同的模块通过复用的方式,可以快速完成,方便省事还美观。 具体步骤: 1.首先完成一个模块的PC

sinat_15677011的博客 5655

视觉Transformer实战 | 将卷积引入视觉Transformer(CvT)

CvT 是一种融合卷积神经网络与 Vision Transformer 优势的视觉模型,旨在解决 ViT 缺乏平移不变性和局部性等归纳偏置的问题。CvT 采用分层结构逐级降采样,使用卷积词元嵌入代替传统 patch 切分,引入卷积投影替代线性投影。这些设计使得 CvT 能够去除位置编码,在高分辨率输入下表现更优。本节深入解析 CvT 的核心原理,并提供完整的 PyTorch 代码实现,演示如何在实际数据集上训练和评估 CvT 模型。

盼小辉丶的博客 726

23个设计模式一文搞懂

本笔记涵盖 23 种经典设计模式,按创建型、结构型、行为型三大类整理。每个模式配有生活类比、核心思想、结构图解、实现要点、真实应用案例、适用场景、优缺点分析及常见面试题。

weixin_72753562的博客 802

31、Labview如何搭建程序框架?--状态机到数据采集等常用框架

本文废话不多,直接列举几种框架搭建方式,为了尽量向大家提供干货,本文直接从简介和手把手教搭建框架两方面来讲解,本文提到五种经典框架模式,学会这五种就很够了,分别是:状态机框架(State Machine)、生产者-消费者框架(Producer-Consumer)、主-从框架(Master-Slave)、事件驱动框架(Event-Driven)、分层架构(Layered Architecturep)。这个框架是基于状态机结构的。顾名思义“状态机”就是个“切换程序状态的机器”。本质是一个。

关注我,更多技术问题欢迎私聊~ 3101

设计模式8——桥接模式(bridge)

现在对不同手机类型的不同品牌实现操作编程(比如:开机、关机、上网,打电话等),如图: 传统方案解决手机使用问题(类图): 1,传统方案解决手机操作问题分析 1) 扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。 2) 违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这...

苏云南雁的博客 502

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

桥接模式介绍

桥接模式属于结构型模式,它用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,使得系统更加灵活,并易于扩展,有效的控制了系统中类的个数 (避免了继承层次的指数级爆炸).。今天我们就来介绍下桥接模式。

qq_25409421的博客 2186

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

桥接原理

桥接实验环境: cd /etc/sysconfig/network-scripts/ mkdir /backup mv ifcfg-br0 ifcfg-enp0s25 /backup  #由于桥接需要修改两个文件,所以提前备份以下,以免修改错了 nm-connection-editor  #调用图形管理工具,除了virbr0 virbr1的接口,其他的都删除,自己添加一个网卡接口,命名为sqq ...

qq_42224396的博客 3028

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

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

设计模式(八)—— 桥接模式(定义、案例分析、特点、缺点)

文章目录前言正文一、定义二、情景假设三、情景分析四、模式结构及分析(一) 模式结构1. 类适配器2. 对象适配器(二) 模式分析(1) 模式特点(2) 模式缺点五、使用情景六、延申及拓展总结 前言 文章内容主要参考了刘伟主编的《设计模式(第2版)》,同时也结合了自己的一些思考和理解,希望能帮到大家。 本篇文章主要介绍桥接,这个模式个人认为其实是大家都在默默使用的模式(或者说间接性的使用?) 正文 一、定义 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它

weixin_43905387的博客 4947

Java设计模式-桥接模式

一、桥接模式的特点: 1、实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立开来,这有助于系统进行分层设计,从而产生更好的结构化系统。 2、对于系统的高层部分,只需要知道抽象部分和实现部分的接口就可以了,其它的部分由具体业务来完成。 3、桥接模式替代多层继承方案,可以减少子类的个数,降低系统的管理和维护成本。 4、桥接模式的引入增加了系统的理解和设计难度,由于聚合关联关系建立在抽象层, 要求开发者针对抽象进行设计和编程 ...

fengchengwu2012的博客 1573

网桥原理

目 录 1..... 前言 2       网桥的原理 2.1             桥接的概念 2.2             linux的桥接实现 2.3             网桥的功能 3       网桥的配置 4       网桥的实现 4.1             初始化 4.2             新建网桥 4.3             添加删除端口

海纳百川 1万+

Linux 上的基础网络设备详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34234721的博客 609

vmware中网络连接的桥接、NAT、主机模式的原理和区别

Bridge(桥接模式):一般网卡显示vmnet0,桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主...

u010948569的博客 1万+

网桥原理分析

网桥工作原理: 一   MAC自学习 网桥收到一帧后先进行自学习,查找转发表中收到帧的源地址有无相匹配的项目,如果没有,就在转发表中增加一个项目,如果有 则把原来的项目进行更新 二  帧转发 查找转发表中收到帧的目的地址有无相匹配的项目,如果没有通过所有其他接口(进入网桥的接口除外)进行转发,如果有,则按照转发表中给的接口进行转发,但是要注意如果给出的接口是该帧进入网桥的接口,则应丢弃这...

baidu_37964044的博客 2118

桥接网络的工作原理

转载于:https://www.cnblogs.com/xxdfly/p/6440772.html

weixin_33795833的博客 1591

日志-slf4j桥接原理分析

背景 总结 如果配置属性才能让System.getProperty(String)获取到? Systm.getEnv()和System.getProperties()有何区别呢? 参考 背景 最近在看Zookeeper的源码,在初始化ContainerManager时使用Integer.getInteger(String,int)获取相关属性,而不是读取文件中的配置. ...

pfjia的博客 5560

创建型——工厂系列(Factory)day04

任何可以产生对象的方法或类,都可以称为工厂 单例也是一种工厂 为什么有了new以后,还要有工厂? 1、灵活控制生产过程 2、权限、修饰、日志…… 接口模式 package cn.xhl.interfacemodel; public interface IFruit { public void plant(); public void harvest(); public void grow(); } package cn.xhl.interfacemodel; public class ..

zero_ko的博客 2502
上一篇: 查找算法(Search Algorithm)day03
下一篇: 哈希表(Hash Table)day05
哆唻咪à
博客等级 码龄9年 0粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值