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

结构型(二) - 桥接模式

一、概念

桥接模式(Bridge Pattern):是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

另一种理解方式:一个类存在两个(或多个)独立变化的维度,我们通过组合的方式,让这两个(或多个)维度可以独立进行扩展。

二、实现

这里用手机和处理器的关系来举个例子,手机牌子有:华为、小米、OPPO等,处理器有:麒麟、骁龙、天玑等。两者的变化维度是相对独立的,各自进行演进,但是不同的手机品牌和不同的处理器可以组合形成不同的产品。因此,我们用桥接的方式把他们连接起来。
1、处理器接口及实现

public interface Processor {void processorRun();
}
public class SnapdragonProcessor implements Processor{@Overridepublic void processorRun() {System.out.println("骁龙处理器开始运行");}
}
public class KirinProcessor implements Processor{@Overridepublic void processorRun() {System.out.println("麒麟处理器开始运行");}
}

2、手机功能实现

public abstract class MobilePhone {private Processor processor;public MobilePhone(Processor processor) {this.processor = processor;}protected void run() {System.out.println("开机");processor.processorRun();}
}
public class HuaweiPhone extends MobilePhone {public HuaweiPhone(Processor processor){super(processor);}@Overrideprotected void run() {super.run();System.out.println("华为手机运行");}
}
public class XiaomiPhone extends MobilePhone {public XiaomiPhone (Processor processor){super(processor);}@Overrideprotected void run() {super.run();System.out.println("小米手机运行");}
}

3、验证实现

public class Client {public static void main(String[] args) {KirinProcessor kirinProcessor = new KirinProcessor();HuaweiPhone huaweiPhone = new HuaweiPhone(kirinProcessor);huaweiPhone.run();System.out.println("----------------------");SnapdragonProcessor snapdragonProcessor = new SnapdragonProcessor();XiaomiPhone xiaomiPhone = new XiaomiPhone(snapdragonProcessor);xiaomiPhone.run();}
}

4、结果
桥接运行结果.png

相关文章:

结构型(二) - 桥接模式

一、概念 桥接模式(Bridge Pattern):是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 另一种理解方式:一个类存在两个(或多个…...

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测,WOA-CNN-GR…...

C#与西门子PLC1500的ModbusTcp服务器通信1--项目背景

最近在一个120万元的项目中,涉及到modbustcp通信,我作为软件总工负责项目的通信程序开发,modbus是一个在工业自动化领域中的通信协议,可以是modbusrtu,modbusascii,modbustcp三个形式,具体来说是…...

Socks5代理与IP代理:网络安全与爬虫之道

1. Socks5代理的多功能性 Socks5代理是一种支持TCP和UDP协议的代理技术,适用范围广泛。不同于传统HTTP代理,Socks5代理在传输数据时更为灵活,可以满足实时数据传输的需求,适用于在线游戏、视频流等场景。此外,Socks5代…...

苹果电脑怎么录屏?步骤详解,看到就是赚到

苹果电脑作为一款受欢迎的高性能设备,不仅在日常工作中发挥着重要作用,还可以用于创造内容,如录制屏幕内容。录屏功能能够帮助用户将屏幕上的活动记录成视频,方便分享、演示或存档。可是您知道苹果电脑怎么录屏吗?通过…...

vb毕业生管理系统设计与实现

【摘要】 本毕业生管理系统是使用VB和ACCESS数据库为开发工具开发的一个全新的管理系统(MIS)。开发出的软件可以在任何一个装有VB环境的机器上运行。本毕业生管理系统包括六个子模块:用户登陆模块、学籍管理模块、学生成绩模块、毕业设计选题模块、毕业设计成绩管理模块、系…...

WPF入门到精通:4.页面增删改查及调用接口(待完善)

在WPF中,页面的增删改查可以通过使用DataGrid等控件来实现。接口的调用可以使用HttpClient或RestSharp等网络库来完成。 1.页面增删改查 使用DataGrid控件来展示数据,并通过绑定数据源来实现数据的增删改查操作。示例代码如下: XAML代码&a…...

容器和云原生(三):kubernetes搭建与使用

目录 单机K8S docker containerd image依赖 kubeadm初始化 验证 crictl工具 K8S核心组件 上文安装单机docker是很简单docker,但是生产环境需要多个主机,主机上启动多个docker容器,相同容器会绑定形成1个服务service,微服务…...

spring boot集成jasypt 并 实现自定义加解密

一. 技术需求 由于项目中的配置文件 配置的地方过多,现将配置文件统一放到nacos上集中管理 且密码使用加密的方式放在配置文件中 项目中组件使用的版本环境如下 spring cloud 2021.0.5 spring cloud alibaba 2021.0.5.0 spring boot 2.6.13 二. 技术实现 配置文…...

Qt文件系统操作和文件的读写

一、文件操作类概述 QIODevice:所有输入输出设备的基础类 QFile:用于文件操作和文件数据读写的类QSaveFile:用于安全保存文件的类QTemporaryFile:用于创建临时文件的类QTcpSocket和QUdpSocket:分别实现了TCP和UDP的类…...

MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models

本文也是LLM系列相关文章,针对《MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models》的翻译。 MME:一个多模态大型语言模型的综合评估基准 摘要1 引言2 MME评估套件3 实验4 分析5 结论 摘要 多模态大语言模型(MLLM&…...

学习开发振弦采集模块的注意事项

学习开发振弦采集模块的注意事项 (三河凡科科技/飞讯教学)振弦采集模块是一种用来实时采集和处理振弦信号的电子设备,在工业、航空、医疗等领域都有广泛应用。学习开发振弦采集模块需要注意以下几点: 一、硬件选择 首先需要选择…...

抵御时代风险:高级安全策略与实践

目录 网页篡改攻击 流量攻击 数据库攻击 恶意扫描攻击 域名攻击 在今天的数字时代,网站已经成为企业、机构和个人展示信息、交流互动的重要平台。然而,随着网络攻击技术的不断进步,网站也面临着各种安全威胁。本文将探讨五种常见的网络攻…...

(3)、SpringCache源码分析

1、入口说明 @EnableCaching是开启SpringCache的一个总开关,开启时候我们的缓存相关注解才会生效,所以我们@EnableCaching开始作为入口进行分析, 2、分析@EnableCaching注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(...

如何在 Ubuntu 中安装最新的 Python 版本

动动发财的小手,点个赞吧! Python 是增长最快的主要通用编程语言。其原因有很多,例如其可读性和灵活性、易于学习和使用、可靠性和效率。 目前使用的 Python 有两个主要版本 – 2 和 3(Python 的现在和未来)&#xff1…...

等保测评--安全物理环境--测评方法

安全子类--物理位置选择 a)机房场地应选择在具有防震、防风和防雨等能力的建筑内; 一、测评对象 记录类文档和机房 二、测评实施 1)检查机房所在建筑物是否具有建筑物抗震设防审批文档; 2)检查机房门窗是否不存在因风导致的尘土严重; 3)检查机房是否不存在雨水渗漏…...

解决jmeter导入jmx文件报错方法

有的时候我们导入别人的jmx文件,但是在导入的时候会报错,如下图: 这是缺少jmeter插件jar包所引起的,下载对应jar包放到jmeter安装目录对应的lib/ext下就可以了。可以通过插件管理工具包下载安装,也可以直接下载对应的…...

CH32V307 开启浮点后rtthread的修改

官方版本是3.1.3,而且只有整数的,开启浮点后要做一些修改,这里问了官方并贴出来方便大家使用: 首先在mounriver开启浮点,步骤: 开启浮点:ide 开启float point->rvf, floating point abi->…...

网络面试题(172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少?)

此题面试中常被问到,一定要会172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少? 解题思路: 网络地址:172.22.141.192 10101100.00010110.10001101.11000000 广播…...

macOS nginx部署前端项目

1、安装nginx; brew install nginx2、配置nginx,主要配置代码,服务器代理 1、配置文件地址 根目录是 macOS 文件系统的最顶层目录。您可以在 Finder 中使用快捷键 Shift Command G,然后输入 /usr,即可直接打开 /u…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

自然语言处理——文本分类

文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益&#xff08;IG&#xff09; 分类器设计贝叶斯理论&#xff1a;线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别&#xff0c; 有单标签多类别文本分类和多…...