桥接模式(Bridge Pattern)
概念:
· 将抽象部分与实现部分分离,使它们可以独立地变化;
· 用"桥"连接抽象和实现部分;
UML结构:
Abstraction--------------------Implementor | | ------------------- ------------------- | | | | RefinedAbstraction ... ConcreteImplementorA ConcreteImplementorB代码示例:
cs/// <summary> /// 形状抽象类 /// </summary> public abstract class Shape { public string ShapeName { get; private set; } public Renderer Renderer { get; set; } public Shape(string shapeName, Renderer renderer) { this.ShapeName = shapeName; this.Renderer = renderer; } // 创建一个形状 public virtual void Draw() { Renderer.Render(this); } } /// <summary> /// 圆形(形状抽象类的具体实现) /// </summary> public class Circle : Shape { public Circle(string shapeName, Renderer renderer) : base(shapeName, renderer) { } } /// <summary> /// 矩形(形状抽象类的具体实现) /// </summary> public class Rectangle : Shape { public Rectangle(string shapeName, Renderer renderer) : base(shapeName, renderer) { } } /// <summary> /// 渲染平台抽象类 /// </summary> public abstract class Renderer { // 渲染一个图形 public abstract void Render(Shape shape); } /// <summary> /// OpenGL渲染类(渲染抽象类的具体的实现) /// </summary> public class OpenGL : Renderer { // 渲染一个图形? public override void Render(Shape shape) { Console.WriteLine($"使用OpenGL渲染引擎渲染图形:{shape.ShapeName}"); } } /// <summary> /// DirectX渲染类(渲染抽象类的具体的实现) /// </summary> public class DirectX : Renderer { // 渲染一个图形 public override void Render(Shape shape) { Console.WriteLine($"使用DirectX渲染引擎渲染图形:{shape.ShapeName}"); } } /// <summary> /// 客户端 /// </summary> public class Client { public static void Main() { Renderer openGL = new OpenGL(); Renderer directX = new DirectX(); Shape circle = new Circle("Circle", openGL); Shape rectangle = new Rectangle("Rectangle", directX); circle.Draw(); rectangle.Draw(); circle.Renderer = directX; rectangle.Renderer = openGL; circle.Draw(); rectangle.Draw(); } }特点:
优点:· 抽象与实现分离 :修改实现不会影响抽象,反之亦然;
· 提高可扩展性 :可以在不改变抽象的情况下增加新的实现;
· 避免类爆炸 :不必为每种组合都创建子类;
缺点:· 增加系统复杂性 :类的层次变多,结构相对复杂;
· 理解成本高 :需要理解桥接与组合关系,组合 (Composition)是桥接模式的实现手段;
适用场景:
· 抽象和实现可能独立扩展;
· 不希望在抽象类中固定具体实现;
· 系统中有多维度变化,需要避免类爆炸;
举例场景:
· 图形绘制系统
· 抽象:图形(Shape)
· 扩展抽象:圆形、矩形
· 实现接口:绘图 API(OpenGL、DirectX)
· 具体实现:不同绘图 API 绘制方式
· 跨平台窗口系统
· 抽象:窗口(Window);
· 扩展抽象:对话框窗口、警告窗口;
· 实现接口:操作系统接口(Windows API、Linux API);
· 具体实现:不同操作系统的窗口绘制方法;
【设计模式】桥接模式
大飞pkz2025-09-27 13:10
相关推荐
深蓝电商API1 分钟前
异步爬虫中代理池的并发管理hhy_smile1 分钟前
Special method in class沐知全栈开发5 分钟前
Bootstrap5 轮播༾冬瓜大侠༿10 分钟前
C++string雨季66611 分钟前
Flutter 三端应用实战:OpenHarmony “极简文本字符计数器”——量化表达的尺度skywalker_1114 分钟前
多线程&JUC黎雁·泠崖15 分钟前
Java基础核心能力总结:从语法到API的完整知识体系雨季66622 分钟前
Flutter 三端应用实战:OpenHarmony “呼吸灯”——在焦虑时代守护每一次呼吸的数字禅修初恋叫萱萱1 小时前
构建高性能生成式AI应用:基于Rust Axum与蓝耘DeepSeek-V3.2大模型服务的全栈开发实战cyforkk2 小时前
12、Java 基础硬核复习:集合框架(数据容器)的核心逻辑与面试考点