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

结构型模式 - 桥接模式 (Bridge)

结构型模式 - 桥接模式 (Bridge)

桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。


// 软件接口,作为实现部分
interface Software {void run();
}// 游戏软件类,实现 Software 接口
class Game implements Software {@Overridepublic void run() {System.out.println("运行游戏软件");}
}// 音乐播放器软件类,实现 Software 接口
class MusicPlayer implements Software {@Overridepublic void run() {System.out.println("运行音乐播放器软件");}
}// 手机抽象类,持有 Software 接口的引用
abstract class Phone {protected Software software;public Phone(Software software) {this.software = software;}public abstract void runSoftware();
}// 华为手机类,继承自 Phone 抽象类
class HuaweiPhone extends Phone {public HuaweiPhone(Software software) {super(software);}@Overridepublic void runSoftware() {System.out.print("华为手机 ");software.run();}
}// 苹果手机类,继承自 Phone 抽象类
class ApplePhone extends Phone {public ApplePhone(Software software) {super(software);}@Overridepublic void runSoftware() {System.out.print("苹果手机 ");software.run();}
}// 客户端代码
public class BridgePatternExample {public static void main(String[] args) {// 创建游戏软件对象Software game = new Game();// 创建音乐播放器软件对象Software musicPlayer = new MusicPlayer();// 创建华为手机并安装游戏软件Phone huaweiGamePhone = new HuaweiPhone(game);huaweiGamePhone.runSoftware();// 创建苹果手机并安装音乐播放器软件Phone appleMusicPhone = new ApplePhone(musicPlayer);appleMusicPhone.runSoftware();}
}

相关文章:

结构型模式 - 桥接模式 (Bridge)

结构型模式 - 桥接模式 (Bridge) 桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。 // 软件接口,作为实现部分 interface Software {void run(); }// 游戏软件类,实现 Software 接口 class Game…...

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型,传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新,更是管理、文化、业务流程等全方位的变革。从零开始,如何带领一家传统制造企业走向数字化突破,是许多企业领导者面…...

【Elasticsearch】script_fields 和 runtime_fields的区别

script_fields和runtime_fields都是 Elasticsearch 中用于动态计算字段值的功能,但它们在实现方式、应用场景和性能表现上存在显著区别。以下是两者的详细对比: 1.定义和应用场景 • script_fields: • 定义:通过 Painless 脚本…...

城电科技|会追日的智能花,光伏太阳花开启绿色能源新篇章

当艺术与科技相遇,会碰撞出怎样的火花?城电科技推出的光伏太阳花,以其独特的设计与智能化的功能,给出了答案。这款产品不仅具备太阳能发电的实用功能,更是一件充满科技属性的艺术性光伏产品,吸引了广泛关注…...

【笔记ing】C语言补充、组成原理数据表示与汇编实战、操作系统文件实战(高级阶段)

【第19节 C语言语法进阶】 【19.1 条件运算符与逗号运算符】 1 条件运算符 条件运算符是C语言中唯一的一种三亩运算符。三目运算符代表有三个操作数;双目运算符代表有两个操作数,如逻辑运算符就是双目运算符;弹幕运算符代表有一个操作数&a…...

快节奏生活

在当今快节奏的商务环境中,效率成为了决定企业竞争力的关键因素之一。亿可达软件连接平台,以其独特的功能和优势,为职场人士带来了前所未有的便捷与高效,成为了众多用户心中的“宝藏”工具。 1、亿可达:自动化流程的搭…...

【音视频】音视频录制、播放原理

一、音视频录制原理 通常,音视频录制的步骤如下图所示: 我们分别从音频和视频开始采样,通过麦克风和摄像头来接受我们的音频信息和图像信息,这通常是同时进行的,不过,通常视频的采集会比音频的采集慢&…...

前端Sass面试题及参考答案

目录 什么是 Sass? Sass 和 CSS 的主要区别是什么? Sass 中如何处理列表? Sass 中如何处理映射(map)? Sass 中如何使用函数? Sass 中如何使用内置函数? Sass 中如何设置默认值? Sass 中的 @function 和 @mixin 有什么区别? Sass 中如何实现模块化? Sass 中…...

Web自动化之Selenium控制已经打开的浏览器(Chrome,Edge)

在使用selenium进行web自动化或爬虫的时候,经常会面临登录的情况,对于这种情况,我们可以利用Selenium控制已经打开的浏览器,从而避免每次都需要重新打开浏览器并进行登录的繁琐步骤。 目录 说明 启动浏览器 注意 --user-data-dir说明 代码设定 代码 改进代…...

AF3 unify_template_features 函数解读

AlphaFold3 data_pipeline 模块的 unify_template_features 函数用于将多条链的模板特征整合为一个统一的 FeatureDict,以适应对多链复合物的处理。每条链的模板特征经过索引偏移处理后,拼接为一个完整的模板特征矩阵。 该方法的核心在于: 序列对齐:根据每条链的长度,将模…...

FFmpeg.NET:.NET 平台上的音视频处理利器

FFmpeg.NET 是一个封装了 FFmpeg 功能的 .NET 库,能够方便地在 C# 项目中处理音视频文件。它支持多种操作,包括转码、剪辑、合并、分离音频等。 功能 解析元数据从视频生成缩略图使用以下参数将音频和视频转码为其他格式: 码率(…...

解决 Git 合并冲突:当本地修改与远程提交冲突时

目录 错误原因分析 解决方法 1. 暂存本地修改并合并(保留更改) 2. 丢弃本地修改(强制覆盖) 3. 暂存修改后合并(推荐:使用 git stash) 4. 选择性合并(手动处理冲突文件&#xf…...

SOME/IP-SD -- 协议英文原文讲解5

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.5 S…...

spark的一些指令

一,复制和移动 1、复制文件 格式:cp 源文件 目标文件 示例:把file1.txt 复制一份得到file2.txt 。那么对应的命令就是:cp file1.txt file2.txt 2、复制目录 格式:cp -r 源文件 目标文件夹 示例:把目…...

Redis常用数据类型及其应用案例

文章目录 Redis常用数据类型及其应用案例1. 字符串(String)1.1 简介1.2 应用案例1.2.1 缓存1.2.2 计数器 2. 哈希(Hash)2.1 简介2.2 应用案例2.2.1 存储用户信息2.2.2 购物车 3. 列表(List)3.1 简介3.2 应用…...

kafka数据拉取和发送

文章目录 一、原生 KafkaConsumer1、pom文件引入kafka2、拉取数据3、发送数据二、在spring boot中使用@KafkaListener1、添加依赖2、application.yml3、消息拉取:consumer4、自定义ListenerContainerFactory5、消息发送:producer6、kafka通过clientId鉴权时的鉴权失败问题一、…...

LLM全栈框架完整分类清单(预训练+微调+工具链)

一、预训练框架 1. 大规模分布式训练框架 框架名称核心能力GitHub地址Megatron-LM3D并行训练、FlashAttention支持、Transformer架构优化(NVIDIA生态)NVIDIA/Megatron-LMDeepSpeedZeRO优化系列、3D并行、RLHF全流程支持(微软生态&#xff09…...

蓝桥杯备考:贪心算法之矩阵消除游戏

这道题是牛客上的一道题,它呢和我们之前的排座位游戏非常之相似,但是,排座位问题选择行和列是不会改变元素的值的,这道题呢每每选一行都会把这行或者这列清零,所以我们的策略就是先用二进制把选择所有行的情况全部枚举…...

【Matlab仿真】Matlab Function中如何使用静态变量?

背景 根据Simulink的运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的前次计算的终值如何传递到当前计算周期来?其实可以使用persistent变量实现函数退出和进入时内部变量值的保持。 persistent变…...

DeepSeek 提示词:高效的提示词设计

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

Pixel Couplet Gen 模型压缩与量化实践:在低显存GPU上的部署优化

Pixel Couplet Gen 模型压缩与量化实践:在低显存GPU上的部署优化 1. 轻量化部署的技术挑战与突破 在AI图像生成领域,Pixel Couplet Gen以其出色的生成质量广受好评。但当我们尝试在消费级显卡上部署这个模型时,很快就遇到了显存不足的问题—…...

4月中旬还在招?这波补录是最后的上岸机会!(附岗位方向)

4月中旬,很多同学跑来问我:“老师,春招是不是结束了?我手里还没Offer,是不是要‘毕业即失业’了?”大错特错!4月中旬,不仅不是终点,反而是春招的“黄金捡漏期”。据我观察…...

UDOP-large入门指南:零基础部署,快速实现英文文档智能理解

UDOP-large入门指南:零基础部署,快速实现英文文档智能理解 1. UDOP-large简介:你的英文文档智能助手 Microsoft UDOP-large是微软研究院开发的通用文档处理模型,专门用于理解和分析英文文档。这个模型结合了视觉理解和文本理解能…...

碧蓝航线Live2D提取完全指南:5分钟掌握角色动画资源获取

碧蓝航线Live2D提取完全指南:5分钟掌握角色动画资源获取 【免费下载链接】AzurLaneLive2DExtract OBSOLETE - see readme / 碧蓝航线Live2D提取 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneLive2DExtract 想要提取碧蓝航线中精美的Live2D角色动画…...

革命性监控工具ebpf_exporter:深度解析内核性能的终极指南

革命性监控工具ebpf_exporter:深度解析内核性能的终极指南 【免费下载链接】ebpf_exporter Prometheus exporter for custom eBPF metrics 项目地址: https://gitcode.com/gh_mirrors/eb/ebpf_exporter ebpf_exporter是一款基于eBPF技术的Prometheus exporte…...

ESP32驱动ST7789 LCD与FT6336U触摸屏:从硬件选型到LVGL界面旋转的实战指南

1. 硬件选型与连接指南 第一次接触ESP32驱动ST7789 LCD和FT6336U触摸屏时,我被这块3.2寸IPS屏的显示效果惊艳到了。240x320的分辨率在嵌入式设备上已经相当够用,特别是ST7789驱动芯片的色彩表现力,完全超出了我对SPI接口屏幕的预期。不过在实…...

MySQL触发器能否实现多表同步插入_同步触发器架构实现

能跨表插入但仅限同库,必须用AFTER触发器;BEFORE中跨表写会报ERROR 1442;跨库不可行;应避免复杂操作、确保索引、优先用应用双写或binlog解析替代。MySQL触发器能不能跨表插入数据能,但仅限于同一数据库内,…...

Xfer Records Serum 1.33b4 WiN 终极解锁指南:从安装到高级音色设计

1. Serum 1.33b4 WiN 终极解锁版初探 Serum 1.33b4 WiN 终极解锁版是音乐制作人和声音设计师的福音。这款波表合成器以其出色的音质和直观的界面著称,而解锁版更是去除了所有使用限制,让你可以专注于创作本身。我第一次接触这个版本时,最惊喜…...

揭秘Reward Hacking真相:为什么90%的AI Agent在训练后期崩溃?

第一章:Reward Hacking的本质与系统性风险 2026奇点智能技术大会(https://ml-summit.org) Reward hacking 是强化学习系统在优化目标函数过程中,绕过设计者真实意图、利用奖励函数漏洞获取高分的非预期行为。它并非偶然错误,而是智能体在目…...

智能驾驶中的环境感知与决策控制

智能驾驶中的环境感知与决策控制 随着人工智能和传感器技术的飞速发展,智能驾驶正逐步从实验室走向现实道路。环境感知与决策控制是智能驾驶系统的核心,它们决定了车辆能否安全、高效地行驶。环境感知负责识别周围车辆、行人、交通标志等信息&#xff0…...