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

相关推荐

在Jetson orin NX上安装部署Yolov8

1、环境准备与依赖安装2、安装PyTorch和Torchvision:从NVIDIA官方论坛或开发者下载中心获取与你的JetPack版本兼容的PyTorch wheel文件。例如,对于JetPack 5.1.2,可以安装PyTorch v2.1.0 8。:需要编译安装与PyTorch版本匹配的Torchvision。这里自己编译没有成功,下载了一个现成的可以用torchvision-0.16.2+c6f3977-cp38-cp38-linux_aarch64.whl。

xxxcccvvvbbb的博客 776

桥接模式

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

学习记录 1144

北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead

北航论文模板:解决XeLaTeX中Font shape ‘TU/SimSun(1)/b/n’ undefined(font) using ‘TU/SimSun(1)/m/n’ instead 问题 问题描述: 在使用北航论文模板时,产生了warning:Font shape 'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' i...

qq_39560620的博客 1万+

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

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

zwx900102的博客 3397

4.6 知识库使用指南:如何让AI Agent拥有专业知识

本文介绍了如何为AI Agent构建和使用知识库。知识库的作用是为Agent提供专业知识,包含文档、数据和规则,可用于专业问答和知识检索。使用方法包括创建知识库(上传文档)、向量化处理、知识检索以及在Agent中的应用。核心要点是理解知识库的价值和使用流程。文章还提出了构建方法、检索优化和应用实践等思考题,建议准备高质量数据、优化检索效果并持续更新知识库。下节将介绍用LangGraph构建复杂AI应用。

yonggeit的博客 3009

基于GA-PSO-BP混合神经网络的多输入多输出数据预测-Python代码实现

多输入多输出数据预测

2301_80449389的博客 2783

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

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

方才coding 6968

【安全设备篇】HVV面试专题

还有就是这个可能是被访问的这个内网系统,本身业务系统存在业务逻辑问题,因为内网所布置的很多业务系统往往不会考虑一些安全性问题,比如在正常的业务逻辑请求中直接带了sql语句,就会触发设备规则产生告警,这一类是属于误报,然后会将此告警上报给研判人员,需要研判组专家和甲方客户确认下是否是该系统存在此业务逻辑问题,并且需要确认告警的源ip在此告警的时间段附近有没有进行操作过。天眼日志分析主要基于系统和应用程序的日志数据来识别安全威胁,而威胁感知则通过收集和分析多种来源的情报信息。理解威胁的性质和威胁背后的原理。

大河之犬的博客 7923

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

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

wenbin_java的博客 1303

蓝牙攻防实战:蓝牙技术详解

蓝牙作为轻量级、低功耗的无线通信技术,其设计兼顾了效率与灵活性,但也留下了诸多安全隐患。随着物联网设备的爆发式增长,蓝牙的攻击面也在不断扩大。理解其底层通信机制、协议栈结构以及配对加密逻辑,是提升无线安全防护能力的关键。

idlecloud0105的博客 739

点云最小二乘法拟合曲线

文章目录一、引言 一、引言

dayuhaitang1的博客 2734

23个设计模式一文搞懂

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

weixin_72753562的博客 802

嵌入式Linux&Android开发-TP调试

目录 一、修改DTS,添加新的I2C设备 二、修改Makefile,Kconfig 三、tp调试时的问题排查 一、修改DTS,添加新的I2C设备 &i2c4 { status = "okay"; clock-frequency = <400000>; gslX680@40 { compatible = "gslX680"; reg = <0x40>; touch-gpio = <&gp

嵌入式成长手册 571

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

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

苏云南雁的博客 502

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

桥接模式介绍

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

qq_25409421的博客 2186

ssm框架搭建

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

桥接原理

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

qq_42224396的博客 3028

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

余额充值