用心理解设计模式——桥接模式 / 桥梁模式 (Bridge Pattern)
发布日期:2021-05-19 17:31:56 浏览次数:11 分类:精选文章

本文共 2052 字,大约阅读时间需要 6 分钟。

桥接模式解析与实现

一、定义

桥接模式是一种结构型模式,旨在将抽象和实现解耦,使两者能够在各自的维度上独立发展。

二、结构分析

桥接模式的核心角色包括四个部分:

  • 抽象物体(Abstraction):定义一个或多个需要扩展的接口方法,并持有一个或多个抽象实现者。
  • 抽象实现者(Implementor):定义需要抽象实现的方法接口,它是抽象物体中需要扩展的方法的起点。
  • 具体实现者(ConcreateImplementor):继承自抽象实现者,实现抽象接口,提供具体的方法实现在抽象物体中所需的方法。
  • 精确抽象物体(RefinedAbstraction):反映抽象物体通过继承扩展的方向。它是在抽象物体的基础上进一步细化,但并未完全具体化,仍然可以与不同的抽象实现者进行结合。
  • 三、优点分析

    桥接模式在处理“多重不同修饰”(多维扩展)的需求时具有显著优势:

  • 满足开闭原则:可以通过增加要扩展的接口方法来轻松支持新的功能。
  • 灵活性与可维护性:通过抽象实现者的组合,支持多种不同的行为组合方式。
  • 解耦优势:桥接模式最大程度地解耦了抽象和实现,使两者能够独立发展,没有严格的依赖关系。
  • 四、适用场景

    桥接模式广泛应用于需要支持多维度扩展的场景:

    • 游戏开发:如物体挂组件模式,将各个组件以桥接方式组合,灵活配置物体行为。
    • 业务系统:支持多种操作模块的灵活组合与扩展。

    五、实现示例

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

    六、总结

    桥接模式通过接口和实现的分离,实现了高效的多维扩展。在需要灵活配置行为组件的场景中,桥接模式不仅提高了代码的可维护性,还为未来的功能扩展提供了强有力的支持。

    上一篇:用心理解设计模式——适配器模式 (Adapter Pattern)
    下一篇:用心理解设计模式——外观模式 / 门面模式 (Facade Pattern)

    发表评论

    最新留言

    不错!
    [***.144.177.141]2025年04月22日 20时12分22秒