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

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();}
}

输出:

绘制圆形
使用红色
绘制圆形
使用绿色
http://www.lryc.cn/news/537127.html

相关文章:

  • 机器学习(李宏毅)——GAN
  • QT无弹窗运行和只允许运行一个exe
  • C++ STL 容器
  • 开源赋能,智造未来:Odoo+工业物联网,解锁智能工厂新范式——以真实案例解读制造业数字化转型的降本增效密码
  • CTF-WEB: 利用iframe标签利用xss,waf过滤后再转换漏洞-- N1ctf Junior display
  • K8s组件
  • python面试题
  • AOS安装及操作演示
  • 蓝桥杯单片机组第十三届初赛试题-程序题(第2批)
  • 企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
  • Python Pandas(11):Pandas 数据可视化
  • 【练习】图论
  • 【RAG落地利器】Weaviate、Milvus、Qdrant 和 Chroma 向量数据库对比
  • 今日AI和商界事件(2025-02-14)
  • 【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用
  • spring6(完结)
  • Kubernetes (k8s) 常用指令速查表
  • DeepSeek教unity------MessagePack-05
  • Kotlin 优雅的接口实现
  • 新的面试题CSS
  • DeepSeek R1打造本地化RAG知识库
  • 聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单
  • 基于Flask的影视剧热度数据可视化分析系统的设计与实现
  • 【弹性计算】弹性计算的技术架构
  • python-leetcode 31.K个一组翻转链表
  • 算法08-递归调用转为循环的通用方法
  • [创业之路-300]:进一步理解货币与金钱, 货币与货币政策
  • 达梦:跟踪日志诊断
  • Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL
  • js考核第三题