当前位置: 首页 > news >正文

深度学习设计模式之桥接模式

文章目录

  • 前言
  • 一、介绍
  • 二、详细分析
    • 1.核心组成
    • 2.实现步骤
    • 3.代码示例
    • 4.优缺点
      • 优点
      • 缺点
    • 5.使用场景
  • 总结


前言

桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。


一、介绍

桥接模式是结构型设计模式,主要是将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。通俗来讲是通过组合来桥接其它的行为/维度。

二、详细分析

1.核心组成

  • 抽象化角色 :主要负责定义出该角色的行为 ,并包含一个对实现化对象的引用。

    • 扩展抽象化角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。

    • 实现化角色 :定义实现化角色的接口,包含角色必须的行为和属性,并供扩展抽象化角色调用。

    • 具体实现化角色 :给出实现化角色接口的具体实现。
      在这里插入图片描述

2.实现步骤

  1. 先创建实现角色接口;
  2. 创建实现角色的具体实现类;
  3. 创建抽象角色,持有实现角色接口类;
  4. 创建抽象角色扩展类,继承抽象角色。

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&#xf…...

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 新特性&#xff1a;深入理解 Lambda 表达式的强大与应用 Lambda 表达式是 Java 8 引入的重要特性之一&#xff0c;它允许将匿名函数&#xff08;即无名称的函数&#xff09;作为参数传递给方法&#xff0c;简化了代码的编写&#xff0c;使代码更加简洁和易读。本文将深…...

HTML5 Canvas图形绘制技术应用

HTML5 Canvas图形绘制技术应用 目录 Canvas基础知识基本绘图操作路径操作文本绘制图像绘制变换复合图形与剪切阴影渐变动画与交互高级技巧...

JMETER工具:以录制手机app为例

JMETER工具&#xff1a;以录制手机app为例子 JMETER安装和环境配置 pc需要安装jdk&#xff0c;并进行jdk的环境配置&#xff0c;安装好jdk并配置好后&#xff0c;通过命令行输入java –version出现以下界面就表示安装成功&#xff1a; &#xff08;对应的jdk版本不可太低&…...

PDF文件权限密码保护:如何去除及解决方法

如果你忘记了PDF文件密码&#xff0c;不用担心&#xff01;PDF解密、找回密码、去除密码的方法简单易行。只需两步&#xff1a;1、打开百度搜索“密码帝官网”&#xff1b;2、在官网页面点击“立即开始”&#xff0c;上传文件&#xff0c;稍等片刻即可找回密码。这种方法安全、…...

【电子信息(工程)】电子通信创新创业教育综合

电子通信创新创业教育 阐述电磁场、电磁波和电磁频谱及应用一、电磁场 法拉第根据电流与磁场的关系,提出了电磁感应定律:如果电磁场中有处于运动状态下的闭合回路导体存在,流经该导体磁场的磁场强度和磁场量,通常都会出现相应的变化,电磁感应电流由此而产生。随后,英国的…...

光伏无人机巡检的工作原理是什么?

随着科技的飞速发展&#xff0c;无人机技术已经深入到众多领域&#xff0c;其中光伏电站的巡检工作便是其应用的一个重要方向。光伏无人机巡检&#xff0c;通过搭载各种先进的传感器和设备&#xff0c;对光伏电站进行全面的、高效的、安全的检测&#xff0c;为电站的运维管理提…...

保姆级教程:用Docker一键部署YOLOv10 TensorRT模型到Jetson Orin Nano(支持USB摄像头)

极速部署YOLOv10 TensorRT模型到Jetson Orin Nano的完整实践指南 在边缘计算设备上实现高效的目标检测一直是AI开发者关注的焦点。Jetson Orin Nano作为NVIDIA推出的高性能边缘计算平台&#xff0c;配合YOLOv10这一最新目标检测模型&#xff0c;能够为各类实时视觉应用提供强大…...

ESP8266红外MQTT网关:基于Homie协议的轻量级IoT封装

1. 项目概述simple-homie-iot-ir是一个面向 ESP8266 平台&#xff08;亦可适配 ESP32&#xff09;的轻量级嵌入式 IoT 封装库&#xff0c;其核心定位并非从零实现 Homie 规范&#xff0c;而是作为homie-iotESP 库的简化抽象层&#xff0c;专为红外&#xff08;IR&#xff09;设…...

2026奇点智能技术大会前瞻(仅限首批参会者解密的8项AI-Native Data Stack技术白皮书)

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI原生大数据处理 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次定义“AI原生大数据处理”范式——数据不再经由传统ETL管道预处理后喂给模型&#xff0c;而是以流式、语义化、向量化形态直接进入推理与训练…...

Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语劣

前言 在使用 kubectl get $KIND -o yaml 查看 k8s 资源时&#xff0c;输出结果中包含大量由集群自动生成的元数据&#xff08;如 managedFields、resourceVersion、uid 等&#xff09;。这些信息在实际复用 yaml 清单时需要手动清理&#xff0c;增加了额外的工作量。 使用 kube…...

奶奶都能看懂的 C# —— 手把手 LINQ懈

一、 什么是 AI Skills&#xff1a;从工具级到框架级的演化 AI Skills&#xff08;AI 技能&#xff09; 的概念最早在 Claude Code 等前沿 Agent 实践中被强化。最初&#xff0c;Skills 被视为“工具级”的增强&#xff0c;如简单的文件读写或终端操作&#xff0c;方便用户快速…...

打造沉浸式智能AI问答助手:Vue + UniApp 全端实战(支持 Markdown/公式/多模态交互)幌

OCP原则 ocp指开闭原则&#xff0c;对扩展开放&#xff0c;对修改关闭。是七大原则中最基本的一个原则。 依赖倒置原则&#xff08;DIP&#xff09; 什么是依赖倒置原则 核心是面向接口编程、面向抽象编程&#xff0c; 不是面向具体编程。 依赖倒置原则的目的 降低耦合度&#…...

MedGemma 1.5效果展示:对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演

MedGemma 1.5效果展示&#xff1a;对‘慢性肾病贫血管理’的ESA使用指征→铁状态评估→给药路径推演 1. 引言&#xff1a;当AI遇见临床诊疗路径 想象一下&#xff0c;你是一位肾内科医生&#xff0c;面对一位慢性肾病&#xff08;CKD&#xff09;合并贫血的患者。你需要快速梳…...

告别零样本提示:为什么在复杂业务里,Text2SQL微调才是王道?以DB-GPT-Hub为例

为什么Text2SQL微调在复杂业务场景中不可替代&#xff1f;DB-GPT-Hub实战解析 当企业数据库遇到多表关联、嵌套查询和业务专属术语时&#xff0c;传统零样本提示方法的SQL生成准确率往往会断崖式下跌。去年某金融科技团队在迁移核心交易系统时发现&#xff0c;即使使用顶级大模…...

LVM磁盘扩容实战:如何在已有逻辑卷上直接扩展存储空间

1. LVM磁盘扩容的核心场景与原理 想象一下你的手机存储空间快满了&#xff0c;但你又不想删除珍贵的照片和视频。这时候最直接的办法就是买一张更大容量的存储卡&#xff0c;把数据迁移过去。但在服务器环境中&#xff0c;这种"换卡"操作往往意味着停机、数据迁移等一…...

三极管有源滤波电路真的可以工作吗?

超简单的三极管有源滤波电路 01 【三极管有源滤波】 一、滤波电路 今天看到一个B站视频&#xff0c; 介绍使用三极管进行有源滤波的电路。 这个三极管有源滤波电路&#xff0c; 串联在整流电路的后边&#xff0c; 对输出波纹进行滤波。 那么问题来了&#xff0c; 究竟这个电路…...