结构型——桥接模式(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作为下一代无线发展的风向标,不仅在带宽方面可以满足高清视频业务的发展,还可以支持更多的宽带用户,真正实现无线宽带化。承载网作为电信网络的基础,需要思考如何有效支撑无线网络的发展和演进。 立即下载

相关推荐

Rust 编译工具链配置指南:从 link.exe 缺失到完美解决

本文详细解析了Windows下Rust编译时常见的'link.exe not found'错误,提供了MSVC和MinGW-w64两种工具链的完整配置指南。从Visual Studio组件安装到环境变量设置,再到疑难排查技巧,帮助开发者彻底解决Rust编译工具链配置问题,提升开发效率。

earth的博客 318

桥接模式

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

学习记录 1144

DEM边界数值爆炸?用ArcGIS空间分析工具链搞定异常值过滤全流程

本文针对DEM数据处理中常见的边界数值爆炸问题,提供了一套完整的ArcGIS空间分析解决方案。文章深入剖析了异常值产生的根源,并详细介绍了从诊断、定位到使用栅格计算器、重分类等工具进行精准过滤与修复的全流程工作流,帮助用户彻底解决由插值误差、数据拼接及坐标系转换引发的数值异常。

weixin_29269441的博客 148

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

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

zwx900102的博客 3397

【学习系列】SAP RAP 16:RAP应用部署集成至Fiori Launchpad 【On-Premise】

本文详细介绍了如何将开发完成的RAP应用部署到S4HANA 2023 On-Premise环境并集成到Fiori Launchpad的完整流程。主要内容包括:1)通过ADT工具创建Fiori项目并配置外部IDE(VSCode);2)使用npm命令部署应用到系统;3)通过事务代码创建语义对象、磁贴目录和目标映射;4)配置PFCG角色分配;5)补充了部署失败解决方案、翻译问题处理、自定义主题设置以及登录页面LOGO修改等内容。文章提供了step-by-step的操作指南,帮助开发者将预览模式的应用正式部署到生产

DeveloperMrMeng的博客 632

MATLAB应用实战系列(四十三)-基于MATLAB的光伏并网系统仿真设计

在Matlab中建立光伏电站接入系统模型,包括光伏发电逆变器及负荷模型等,仿真分析接入点处的电能质量,实现高品质并网运行。 壹 构建太阳能电池模型。 初始化参数如下图所示。 贰 构建MPPT控制模型。 具体封装如下所示: 通过PWM算法实现DC-DC稳步输出最大点。 叁 三、构建直流短距离输电线路。 仿真模型如下图: 通过电容来均衡线路电压,使得线路电压保持可靠性。 肆 通过逆变器变换,使得直流线路转换成...

wenyusuran的专栏 3169

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

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

方才coding 6968

C/C++小宇宙代码(完整代码)

C语言实现小宇宙的完整代码。

AIGC 2523

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

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

wenbin_java的博客 1303

芒果YOLOv7改进04:Loss篇:原创改进损失函数Repulsion:独家首发最新改进Repulsion Loss解决目标遮挡场景下检测,为解决密集人群检测中遮挡设计的损失函数,打造高效检测器涨点

YOLOv7原创改进Repulsion|首发最新改进为解决密集人群检测中遮挡设计的损失函数

包括YOLOv5、YOLOv7、YOLOv8等模型改进 3251

Linux V3H 平台开发系列讲解(串行解串篇)2.2.2 MAX9296 MAX96705 GMSL1 续篇--串行器提前配置

本文详细介绍了在Linux v3h平台上,针对Max9296解串器和解串器max96705的详解配置,验证可出图,内容包括串行器解串器介绍、链路框架、硬件连接、速率配置,以及遇到的图像异常问题及解决方法。

xian18809311584的博客 538

23个设计模式一文搞懂

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

weixin_72753562的博客 802

Python 爬虫实战:网站反爬机制绕过终极指南(技术原理 + 实战代码 + 避坑技巧)

在 Python 爬虫的世界里,反爬机制是每一个爬虫开发者都必须面对的挑战。网站为了保护自身数据不被恶意爬取,会设置各种反爬机制,这使得爬虫开发变得更加复杂和有趣。本文将详细介绍常见的网站反爬机制及其绕过方法,结合技术原理、实战代码和避坑技巧,帮助你成为一名优秀的爬虫开发者。

u014481728的博客 1004

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

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

苏云南雁的博客 502

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

桥接模式介绍

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

qq_25409421的博客 2186

efm32 入门.pdf

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

桥接原理

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

qq_42224396的博客 3028

Statistics and Machine Learning Toolbox

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

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

文章目录前言正文一、定义二、情景假设三、情景分析四、模式结构及分析(一) 模式结构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、付费专栏及课程。

余额充值