深度学习设计模式之桥接模式
文章目录
- 前言
- 一、介绍
- 二、详细分析
- 1.核心组成
- 2.实现步骤
- 3.代码示例
- 4.优缺点
- 优点
- 缺点
- 5.使用场景
- 总结
前言
桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。
一、介绍
桥接模式是结构型设计模式,主要是将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。通俗来讲是通过组合来桥接其它的行为/维度。
二、详细分析
1.核心组成
-
抽象化角色 :主要负责定义出该角色的行为 ,并包含一个对实现化对象的引用。
-
扩展抽象化角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
-
实现化角色 :定义实现化角色的接口,包含角色必须的行为和属性,并供扩展抽象化角色调用。
-
具体实现化角色 :给出实现化角色接口的具体实现。

-
2.实现步骤
- 先创建实现角色接口;
- 创建实现角色的具体实现类;
- 创建抽象角色,持有实现角色接口类;
- 创建抽象角色扩展类,继承抽象角色。
3.代码示例
实现角色类
/*** 实现角色类*/
public interface CatColour {/*** 获取颜色*/void getColour();
}
具体实现角色类
/*** 接口实现类*/
public class RedCatColour implements CatColour{@Overridepublic void getColour() {System.out.println("红色");}
}
public class SkyBlueCatColour implements CatColour{@Overridepublic void getColour() {System.out.println("天蓝色");}
}
抽象角色类
/*** 抽象类接口*/
public abstract class Cat {// 将接口作为一个属性来修饰 抽象类protected CatColour catColour;// set方法设置属性Capublic void setCatColour(CatColour catColour) {this.catColour = catColour;}/*** 行驶汽车*/abstract void run();}
抽象扩展实现类
/*** 抽象实现类*/
public class XiaomiSu7Cat extends Cat{public XiaomiSu7Cat(CatColour colour) {super.setCatColour(colour);}@Overridevoid run() {catColour.getColour();System.out.println("小米su7");}
}
public class BmwCat extends Cat{public BmwCat(CatColour catColour) {super.setCatColour(catColour);}@Overridevoid run() {catColour.getColour();System.out.println("宝马车");}
}
测试类
public static void main(String[] args) {XiaomiSu7Cat xiaomiSu7Cat = new XiaomiSu7Cat(new SkyBlueCatColour());xiaomiSu7Cat.run();}
结果

4.优缺点
优点
-
抽象和实现的分离。桥接模式使用"对象间的关联关系"解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。
-
优秀的扩展能力。桥接模式提高了系统的扩展性,在两个变化维度中任意扩展一个维度都不需要修改原有系统,符合开闭原则。
缺点
- 增加系统的理解与设计难度。由于关联关系建立在抽象层,要求开发者一开始就要对抽象层进行设计和编程。
5.使用场景
-
系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性;
-
不想使用继承导致类的个数急剧增加。
总结
以上就是今天的内容了,本文简单介绍了桥接设计模式的使用和优缺点,提供代码示例以供参考。
相关文章:
深度学习设计模式之桥接模式
文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言 桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。 一、介绍 桥接模式是结构型设计模式,主要是将抽象部分与实现部分分离&#x…...
设计模式 17 组合模式 Composite Pattern
设计模式 17 组合模式 Composite Pattern 1.定义 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设…...
【经典论文阅读10】MNS采样——召回双塔模型的最佳拍档
这篇发表于2020 WWW 上的会议论文,提出一种MNS方式的负样本采样方法。众所周知,MF方法难以解决冷启动问题,于是进化出双塔模型,但是以双塔模型为基础的召回模型的好坏十分依赖负样本的选取。为了解决Batch内负样本带来的选择性偏差…...
串行低功耗芯片间媒体总线(SLIMbus)介绍
文章目录 SLIMbus简介slimbus设备和设备类Manager DeviceFramer DeviceInterface DeviceGeneric Device (Function)SLIMbus组件简单的SLIMbus组件复杂的SLIMbus组件SLIMbus的DATA和CLKSLIMbus的Clock Frequencies和GearsCells, Slots, Subframes, Frames, and...
esp32-S3 使用自带的大模型,实现本地文字转语言tts
目录 CMakeLists.txt文件中: 初始化以及实际运用代码: 在partitions.csv 内存分配文件中,添加voice_data项...
Redis事务(1)
什么是事务? Redis 的事务和 MySQL 的事务概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行。 但是注意体会 Redis 的事务和 MySQL 事务的区别: 弱化的原⼦性: redis 没有 “回滚机制”. 只能做到这些操作 “批量执⾏”. 不能做到 “⼀个失败就…...
202206青少年软件编程(Python)等级考试试卷(四级)
第 1 题 【单选题】 有如下 Python 程序, 包含 lambda 函数, 运行该程序后, 输出的结果是? ( ) g = lambda x,y:x*yprint(g(2,3))A :2 B :3 C :6 D :8 正确答案:C 试题解析: g = lambda x, y: x*y, lambda 函数返回参数 x 和 y 的积, 因此选 C。 第 2 题 【单选…...
大作业爬取手机数据,实现手机推荐系统以及朋友圈手机论坛
1、功能简介 (1)用户注册与用户登录 (2)手机搜索、手机比拼、手机个性化推荐 (3)点击搜索的手机图片会就用户行为,轮播展示用户行为,推荐点击次数靠前的手机 (4…...
Leetcode 环形链表|| 快慢指针解法
但是我们不知道 aaa 的值,该怎么办?依然是使用双指针法。考虑构建一个指针,此指针需要有以下性质:此指针和 slow 一起向前走 a 步后,两者在入口节点重合。那么从哪里走到入口节点需要 aaa 步?答案是链表头节…...
出书,是「盖你自己的房子」你知道吗?
出书是「盖你自己的房子」 尊敬的出书盟友: 你好!我希望这封信能够激发您对出书和阅读的热情。 在当今信息爆炸的时代,每个人都有机会分享自己的故事、思想和知识。而书籍作为一种流传百年的媒体,依旧承载着无限的力量和影响力…...
深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥
系列文章目录 更新ing... MySQL操作全攻略:库、表、数据、事务全面指南深入探索MySQL SELECT查询:从基础到高级,解锁数据宝藏的密钥MySQL SELECT查询实战:练习题精选,提升你的数据库查询技能PyMySQL:连接P…...
驾校管理系统-手把手调试搭建
驾校管理系统-手把手调试搭建 驾校管理系统-手把手调试搭建...
知能行——考研数学利器
知能行使用体验全记录 首先,我先介绍一下自己,我是2018级的,2022年6月毕业,本科沈阳工业大学(双非),今年二战,专业课自动控制原理,数二英二,目标是江南大学控…...
pod 库发布脚本
repo_tag.sh 文件 #!/bin/zsh# 私有库名称 #PODNAME${PWD##*/} PODNAME"LBHorizontalCenterLayout"function obtain_git_tag {# 类似 "s.version 0.0.1"VERSION_STRINGgrep -E s.version.* ${PODNAME}.podspecTAGtr -cd "[0-9.]" <<&…...
Java 8 新特性:深入理解 Lambda 表达式的强大与应用
Java 8 新特性:深入理解 Lambda 表达式的强大与应用 Lambda 表达式是 Java 8 引入的重要特性之一,它允许将匿名函数(即无名称的函数)作为参数传递给方法,简化了代码的编写,使代码更加简洁和易读。本文将深…...
HTML5 Canvas图形绘制技术应用
HTML5 Canvas图形绘制技术应用 目录 Canvas基础知识基本绘图操作路径操作文本绘制图像绘制变换复合图形与剪切阴影渐变动画与交互高级技巧...
JMETER工具:以录制手机app为例
JMETER工具:以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk,并进行jdk的环境配置,安装好jdk并配置好后,通过命令行输入java –version出现以下界面就表示安装成功: (对应的jdk版本不可太低&…...
PDF文件权限密码保护:如何去除及解决方法
如果你忘记了PDF文件密码,不用担心!PDF解密、找回密码、去除密码的方法简单易行。只需两步:1、打开百度搜索“密码帝官网”;2、在官网页面点击“立即开始”,上传文件,稍等片刻即可找回密码。这种方法安全、…...
【电子信息(工程)】电子通信创新创业教育综合
电子通信创新创业教育 阐述电磁场、电磁波和电磁频谱及应用一、电磁场 法拉第根据电流与磁场的关系,提出了电磁感应定律:如果电磁场中有处于运动状态下的闭合回路导体存在,流经该导体磁场的磁场强度和磁场量,通常都会出现相应的变化,电磁感应电流由此而产生。随后,英国的…...
光伏无人机巡检的工作原理是什么?
随着科技的飞速发展,无人机技术已经深入到众多领域,其中光伏电站的巡检工作便是其应用的一个重要方向。光伏无人机巡检,通过搭载各种先进的传感器和设备,对光伏电站进行全面的、高效的、安全的检测,为电站的运维管理提…...
AI智能体架构设计:从成本黑洞到价值引擎的解耦之道
1. 从成本黑洞到价值引擎:为什么你的AI智能体架构正在吞噬预算又到了季度技术复盘会,财务那边递过来的云账单和工程人力成本,是不是又让你倒吸一口凉气?你看着报表上那个名为“AI智能体平台”的项目,它的资源消耗曲线几…...
Unity安卓构建72小时实战指南:从零到真机运行
1. 这不是“又一本Unity教程”,而是我带三个新人从零上线第一款安卓游戏的真实路径你点开这个标题,大概率正站在两个路口之间:一边是满屏“30天速成Unity”“零基础做爆款”的短视频封面,一边是你刚下载完Unity Hub、卡在Android …...
Godot中型项目工程化实践:目录规范、资源引用与状态管理
1. 这不是续集,而是项目落地的分水岭“Godot 游戏引擎项目(二)”——看到这个标题,很多人第一反应是:“哦,上一篇讲了环境搭建和Hello World,这篇该讲节点树和信号了?”但我在带三个…...
Lampiao 靶场
Lampiao 靶场完整渗透解析一、靶场环境信息攻击机(Kali)IP:192.168.146.128靶机 IP:192.168.146.129目标:获取靶机 root 权限与 flag二、步骤 1:信息收集(端口与服务扫描)nmap -p- -…...
如何在macOS上免费解锁QQ音乐加密文件:完整指南
如何在macOS上免费解锁QQ音乐加密文件:完整指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...
AI写的论文双率如何压到20%以下?这几款工具实测有效
毕业季、投稿季用AI写论文已经成为不少人的高效选择,但查重率飘红、AIGC疑似率超标两大问题,让很多人犯了难。2026年学术检测标准持续收紧,知网、维普及主流AIGC检测系统同步上线双检规则,两项指标均控制在20%以下才符合基本提交要…...
Unity动态自然系统:Forest Environment-Dynamic Nature深度解析
1. 这不是“贴图堆砌”,而是自然系统级建模:Forest Environment-Dynamic Nature 的真实定位你有没有试过在Unity里拖进几棵树、铺点草、加个天空盒,然后发现场景像一张静止的风景明信片——风不动、叶不摇、雨不落、雾不散?我做过…...
Taotoken如何帮助教育科技产品实现个性化学习辅导
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken如何帮助教育科技产品实现个性化学习辅导 1. 场景与挑战 教育科技公司在开发个性化学习助手时,常常面临一个核…...
手把手教你用Mind+和Blynk,让手机轻松遥控掌控板(含自建服务器避坑指南)
从零搭建物联网控制平台:Mind与Blynk深度整合实战 当你第一次尝试用手机控制硬件设备时,那种"隔空取物"的奇妙感总会让人兴奋不已。想象一下,躺在沙发上就能调节书桌上的智能台灯亮度,或者在外出时随时查看家中的温湿度…...
OpenIPC开源固件:5分钟解锁网络摄像头的终极控制权
OpenIPC开源固件:5分钟解锁网络摄像头的终极控制权 【免费下载链接】firmware Alternative IP Camera firmware from an open community 项目地址: https://gitcode.com/gh_mirrors/fir/firmware 还在为网络摄像头的封闭系统而烦恼吗?想要完全掌控…...
