Java 设计模式之桥接模式
文章目录
- Java 设计模式之桥接模式
- 概述
- UML
- 代码实现
Java 设计模式之桥接模式
概述
- 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 通过桥接模式,可以避免类爆炸问题,并提高系统的可扩展性。
UML

核心思想:
- 抽象部分:定义高层的控制逻辑。
- 实现部分:定义底层的具体实现。
- 桥接:通过组合的方式连接抽象部分和实现部分。
角色:
- Implementor:实现部分的接口,定义行为。
- ConcreteImplementor:具体实现部分类,实现行为。
- Abstraction:抽象部分的抽象类,持有实现部分的引用。
- RefinedAbstraction:具体抽象部分类,实现具体的抽象逻辑。
例如:图形绘制中的形状和颜色。
代码实现
假设我们需要绘制不同形状(如圆形、矩形)的图形,并且这些图形可以使用不同的颜色(如红色、绿色)。使用桥接模式可以将形状和颜色分离,使它们可以独立扩展。
定义部分实现的接口:
public interface Color {void applyColor();
}
定义具体的部分实现类:
public class Red implements Color {@Overridepublic void applyColor() {System.out.println("使用红色");}
}
public class Green implements Color {@Overridepublic void applyColor() {System.out.println("使用绿色");}
}
定义抽象实现的抽象类:
public abstract class Shape {protected Color color;public Shape(Color color) {this.color = color;}public abstract void draw();
}
定义具体的抽象实现类:
public class Rectangle extends Shape {public Rectangle(Color color) {super(color);}@Overridepublic void draw() {System.out.println("绘制矩形");color.applyColor();}
}
public class Circle extends Shape {public Circle(Color color) {super(color);}@Overridepublic void draw() {System.out.println("绘制圆形");color.applyColor();}
}
使用:
public class Client {public static void main(String[] args) {Red red = new Red();Green green = new Green();Shape redCircle = new Circle(red);Shape greenCircle = new Circle(green);redCircle.draw();greenCircle.draw();}
}
输出:
绘制圆形
使用红色
绘制圆形
使用绿色
相关文章:
Java 设计模式之桥接模式
文章目录 Java 设计模式之桥接模式概述UML代码实现 Java 设计模式之桥接模式 概述 桥接模式(Bridge):将抽象部分与它的实现部分分离,使它们都可以独立地变化。通过桥接模式,可以避免类爆炸问题,并提高系统的可扩展性。 UML 核心…...
机器学习(李宏毅)——GAN
一、前言 本文章作为学习2023年《李宏毅机器学习课程》的笔记,感谢台湾大学李宏毅教授的课程,respect!!! 不得不说GAN真是博大精深! 二、大纲 GAN问世基本思想原理剖析Tips of GANGAN的应用Cycle GANEva…...
QT无弹窗运行和只允许运行一个exe
最近做一个小功能,需要后台运行QT程序,无弹窗,并且只允许一个exe运行,不关闭程序,无法2次启动。 main.cpp #include "deleteshotcurveflie.h" #include <QApplication> #include <QSharedMemory&…...
C++ STL 容器
C 的 STL(Standard Template Library) 提供了多种容器,分为以下几类: 序列容器(Sequence Containers)关联容器(Associative Containers)无序关联容器(Unordered Associa…...
开源赋能,智造未来:Odoo+工业物联网,解锁智能工厂新范式——以真实案例解读制造业数字化转型的降本增效密码
工业物联网的机遇与挑战:为什么企业需要Odoo? 《中国智能制造发展研究报告2023》指出,85%的制造企业已启动数字化转型,但超60%面临“数据孤岛、系统割裂、成本高企”的痛点[1]。传统ERP系统难以实时对接产线设备,而定…...
CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
核心逻辑 // 获取 URL 查询参数的值 function getQueryParam(param) { // 使用 URLSearchParams 从 URL 查询字符串中提取参数 const urlParams new URLSearchParams(window.location.search); // 返回查询参数的值 return urlParams.get(param); } // 使用 DOMPuri…...
K8s组件
一、Kubernetes 集群架构组件 K8S 是属于主从设备模型(Master-Slave 架构),即有 Master 节点负责集群的调度、管理和运维,Slave 节点是集群中的运算工作负载节点。 主节点一般被称为 Master 节点,master节点上有 apis…...
python面试题
以下是一些Python面试题: 一、基础语法 Python中的列表(list)和元组(tuple)有什么区别? 答案: 可变性:列表是可变的,可以修改列表中的元素、添加或删除元素;元组是不可变的,一旦创建就不能修改。语法:列表使用方括号[]定义,元组使用圆括号()定义(单个元素的元组…...
AOS安装及操作演示
文章目录 一、安装node1.1 在 macOS 上管理 Node版本1.1.1 安装 nvm1.1.2 验证 nvm 是否安装成功1.1.3 使用 nvm 安装/切换 Node.js 版本1.1.4 卸载 Node.js 版本 1.2 在 windows 上管理 Node版本1.2.1 安装 nvm-windows1.2.2 安装 Node.js 版本1.2.3 切换 Node.js 版本1.2.4 卸…...
蓝桥杯单片机组第十三届初赛试题-程序题(第2批)
题目到官网看即可,有点久了有些细节记不清了,可能以前发的帖子解释详细一点。 这是我单片机初学的时候写的,像代码结构什么的肯定有可以提升的地方,多多包涵,将就看一下。 i2c文件使用官方的,pcf8591函数…...
企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…...
Python Pandas(11):Pandas 数据可视化
数据可视化是数据分析中的重要环节,它帮助我们更好地理解和解释数据的模式、趋势和关系。通过图形、图表等形式,数据可视化将复杂的数字和统计信息转化为易于理解的图像,从而便于做出决策。Pandas 提供了与 Matplotlib 和 Seaborn 等可视化库…...
【练习】图论
F. Friendly Group 图中选择一个点-1 边两端点都选择1 边一个端点选择-1 添加链接描述 #include<iostream> using namespace std; #include<vector> #include<cstring> const int N300010; int n,m; vector<int> G[N]; int temp1,temp2; bool vis[N…...
【RAG落地利器】Weaviate、Milvus、Qdrant 和 Chroma 向量数据库对比
什么是向量数据库? 向量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。每个向量都有一定数量的维度,根据数据的复杂性和粒度,可以从数十到数千不等。 向量通常是通过对原始数据(如文本、图像、音频、视频等)…...
今日AI和商界事件(2025-02-14)
今日AI大事件主要包括以下几个方面: 一、苹果新品预告 事件概述:苹果CEO蒂姆库克在社交媒体发布7秒视频,配文“准备好迎接家庭的新成员”,并宣布2月19日将有新品发布。知名科技记者马克古尔曼称,新款低端iPhone SE将…...
【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用
ChatGPT、DeepSeek等大语言模型助力科研应用 随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练,能够帮助科研人员高效地筛选文献、生成论文内容、进行数…...
spring6(完结)
像是八大模式这种,放在后面八股文中再重点了解,对于源码部分也是后面会一起手敲。 个人觉得spring的重点在于注解开发,省去了很多耦合的问题,像是各种事务的管理,和bean类的管理都可以给spring容器管理,注入…...
Kubernetes (k8s) 常用指令速查表
以下是一份 Kubernetes (k8s) 常用指令速查表,涵盖集群管理、资源操作、故障排查等场景,适合日常运维和开发使用: 1. 集群与节点管理 命令说明kubectl cluster-info查看集群基本信息kubectl get nodes查看所有节点状态kubectl describe node…...
DeepSeek教unity------MessagePack-05
动态反序列化 当调用 MessagePackSerializer.Deserialize<object> 或 MessagePackSerializer.Deserialize<dynamic> 时,二进制数据中存在的任何值都将被转换为基本值,即 bool、char、sbyte、byte、short、int、long、ushort、uint、ulong、…...
Kotlin 优雅的接口实现
1. 日常遇到的冗余的接口方法实现 日常开发中,经常会要实现接口,但是很多场景中,只需要用到其中一两个方法,例如 ActivityLifecycleCallbacks,它有很多个接口需要实现,但是很多时候我们只需要用到其中的一…...
Tiny Builder:基于AI Agent的儿童创意编程入门工具设计与实践
1. 项目概述:为5-8岁孩子设计的AI创意编程入门工具最近在探索如何让孩子(特别是5到8岁这个阶段)能安全、有趣地接触编程和数字创造,我发现了Tiny Builder这个项目。它本质上是一个为OpenClaw AI Agent设计的“技能”(S…...
Speech-AI-Forge:模块化语音AI工具链,整合Whisper与VITS快速构建应用
1. 项目概述:当AI学会“说话”,我们能做什么? 最近在GitHub上看到一个挺有意思的项目,叫“Speech-AI-Forge”。光看名字,你可能会觉得这又是一个关于语音识别的老生常谈。但当我真正点进去,把代码拉下来跑…...
AzurLaneAutoScript深度解析:碧蓝航线自动化脚本的技术架构与实践应用
AzurLaneAutoScript深度解析:碧蓝航线自动化脚本的技术架构与实践应用 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript…...
使用Hermes Agent框架时如何接入Taotoken作为自定义模型提供商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Hermes Agent框架时如何接入Taotoken作为自定义模型提供商 Hermes Agent 是一个流行的智能体应用开发框架,它允许开…...
Dream-Creator:模块化AI绘画工作流平台,从原理到实战全解析
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“Dream-Creator”。光看这个名字,你可能会联想到AI绘画或者创意生成工具。没错,这确实是一个与AI图像生成相关的项目,但它并非一个简单的模型调用脚本,…...
手把手教你将LIO-SAM适配6轴IMU(附UrbanNav数据集实测配置)
从9轴到6轴:LIO-SAM的IMU适配实战与UrbanNav验证 在机器人定位与建图领域,IMU(惯性测量单元)的选择往往让开发者陷入两难:9轴IMU提供更丰富的姿态信息但成本高昂且体积较大,而6轴IMU价格亲民、体积小巧却缺…...
Driver Store Explorer:3步快速清理Windows驱动垃圾,释放数十GB磁盘空间终极指南
Driver Store Explorer:3步快速清理Windows驱动垃圾,释放数十GB磁盘空间终极指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否经常发现Windows系统盘空…...
旧物改造指南:闲置的移动UNT401H电视盒子,刷机变身家庭轻NAS或游戏模拟器
闲置移动UNT401H电视盒子的创意重生指南:从机顶盒到多功能家庭终端 家里角落积灰的移动UNT401H电视盒子,除了偶尔开机看个电视,还能做什么?这款四核ARM处理器、1GB内存的硬件设备,其实蕴藏着远超厂商预设的潜力。当主流…...
魔兽争霸3终极优化指南:免费开源工具WarcraftHelper让你的经典游戏焕发新生
魔兽争霸3终极优化指南:免费开源工具WarcraftHelper让你的经典游戏焕发新生 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸…...
从仿真到实车:手把手教你用CAPL搭建一个真实的ECU故障注入测试环境(基于CANoe在线模式)
从仿真到实车:手把手教你用CAPL搭建一个真实的ECU故障注入测试环境(基于CANoe在线模式) 在汽车电子系统开发中,故障注入测试是验证ECU鲁棒性的关键环节。想象一下,当你的ECU在真实车辆中遭遇总线错误、电压波动或信号干…...
