当前位置: 首页 > 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

http://www.lryc.cn/news/134488.html

相关文章:

  • 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测
  • C#与西门子PLC1500的ModbusTcp服务器通信1--项目背景
  • Socks5代理与IP代理:网络安全与爬虫之道
  • 苹果电脑怎么录屏?步骤详解,看到就是赚到
  • vb毕业生管理系统设计与实现
  • WPF入门到精通:4.页面增删改查及调用接口(待完善)
  • 容器和云原生(三):kubernetes搭建与使用
  • spring boot集成jasypt 并 实现自定义加解密
  • Qt文件系统操作和文件的读写
  • MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
  • 学习开发振弦采集模块的注意事项
  • 抵御时代风险:高级安全策略与实践
  • (3)、SpringCache源码分析
  • 如何在 Ubuntu 中安装最新的 Python 版本
  • 等保测评--安全物理环境--测评方法
  • 解决jmeter导入jmx文件报错方法
  • CH32V307 开启浮点后rtthread的修改
  • 网络面试题(172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少?)
  • macOS nginx部署前端项目
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——削弱——第一节 推理论证
  • LoRa 网络的高效自适应数据链路层架构
  • Ubuntu软件源、pip源大全,国内网站网址,阿里云、网易163、搜狐、华为、清华、北大、中科大、上交、山大、吉大、哈工大、兰大、北理、浙大
  • 4 Python的函数
  • Claude 2 国内镜像站
  • MySQL的基础操作
  • Dockerfile快速搭建自己专属的LAMP环境
  • 秒懂算法│博弈论
  • Springboot整合RabbitMQ消息中间件
  • 基于springboot+vue的食材商城(前后端分离)
  • Maven解析