
用心理解设计模式——桥接模式 / 桥梁模式 (Bridge Pattern)
抽象物体(Abstraction):定义一个或多个需要扩展的接口方法,并持有一个或多个抽象实现者。 抽象实现者(Implementor):定义需要抽象实现的方法接口,它是抽象物体中需要扩展的方法的起点。 具体实现者(ConcreateImplementor):继承自抽象实现者,实现抽象接口,提供具体的方法实现在抽象物体中所需的方法。 精确抽象物体(RefinedAbstraction):反映抽象物体通过继承扩展的方向。它是在抽象物体的基础上进一步细化,但并未完全具体化,仍然可以与不同的抽象实现者进行结合。 满足开闭原则:可以通过增加要扩展的接口方法来轻松支持新的功能。 灵活性与可维护性:通过抽象实现者的组合,支持多种不同的行为组合方式。 解耦优势:桥接模式最大程度地解耦了抽象和实现,使两者能够独立发展,没有严格的依赖关系。
发布日期:2021-05-19 17:31:56
浏览次数:11
分类:精选文章
本文共 2052 字,大约阅读时间需要 6 分钟。
桥接模式解析与实现
一、定义
桥接模式是一种结构型模式,旨在将抽象和实现解耦,使两者能够在各自的维度上独立发展。
二、结构分析
桥接模式的核心角色包括四个部分:
三、优点分析
桥接模式在处理“多重不同修饰”(多维扩展)的需求时具有显著优势:
四、适用场景
桥接模式广泛应用于需要支持多维度扩展的场景:
- 游戏开发:如物体挂组件模式,将各个组件以桥接方式组合,灵活配置物体行为。
- 业务系统:支持多种操作模块的灵活组合与扩展。
五、实现示例
using UnityEngine;namespace Bridge{ // 简单示例:抽象接口定义 public interface IAction { void Execute(); } // 具体实现者A public class Con AbstractImplementorA : IAction { public void Execute() { Debug.Log("执行行为A"); } } // 具体实现者B public class Con AbstractImplementorB : IAction { public void Execute() { Debug.Log("执行行为B"); } } // 抽象物体 public abstract class AbstractAction { protected IAction action; public AbstractAction(IAction action) { this.action = action; } public void Perform() { action.Execute(); } } // 精确抽象类X public class RefinedAbstractX : AbstractAction { public RefinedAbstractX(IAction action) : base(action) { Debug.Log("创建精确抽象类X"); } } // 精确抽象类Y public class RefinedAbstractY : AbstractAction { public RefinedAbstractY(IAction action) : base(action) { Debug.Log("创建精确抽象类Y"); } } public class Client { public static void Main() { // 组合不同的实现 var actionX = new RefinedAbstractX(new Con AbstractImplementorA()); actionX.Perform(); var actionY = new RefinedAbstractY(new Con AbstractImplementorB()); actionY.Perform(); } }}
六、总结
桥接模式通过接口和实现的分离,实现了高效的多维扩展。在需要灵活配置行为组件的场景中,桥接模式不仅提高了代码的可维护性,还为未来的功能扩展提供了强有力的支持。
发表评论
最新留言
不错!
[***.144.177.141]2025年04月22日 20时12分22秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
HERest源码解析
2019-03-16
【阅读论文】博-自动化眼底图像分析技术可筛查糖尿病患者的视网膜疾病--第二章
2019-03-16
51单片机的复位电路
2019-03-16
OpenCV-Python图像梯度 Scharr算子
2019-03-16
java 原型模式(大话设计模式)
2019-03-16
java 中介者模式(大话设计模式)
2019-03-16
微机原理 6-计算机中常用的数制
2019-03-16
2.3 电阻的Y形连接和△形连接的等效变换
2019-03-16
2.5 实际电源的两种模型及其等效变换
2019-03-16
MCS51 程序存储器(ROM)
2019-03-16
web访问ejb测试 详解
2019-03-16
window系统下安装使用curl命令工具
2019-03-16
假如计算机是中国人发明的,那代码应该这么写
2019-03-16
神器 Codelf !
2019-03-16
趣图:会算法和不会算法的区别
2019-03-16
一行代码就能解决的智力算法题
2019-03-16
区块链会2020再次爆发,先学点DAPP压压惊,跟我一起学《区块链DApp入门实战》
2019-03-16
问题解决28:微信网页授权出现redicet_uri 参数错误
2019-03-16
App的启动过程(2)framework侧-恢复最上层的Activity
2019-03-16