65.9K
CodeProject 正在变化。 阅读更多。
Home

桥模式

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7013

桥接模式桥接模式将抽象部分与其实现部分解耦,使得二者可以独立变化。换句话说,我们创建了一个

桥接模式
桥接模式将抽象部分与其实现部分解耦,使得
二者可以独立变化。换句话说,我们在
抽象部分和其实现部分之间创建了一个桥接,因此我们不会有
两者之间的绑定。当我们需要在运行时
选择或切换实现时,此模式很有帮助。


有关该模式的UML图,请访问dofactory 站点

C# 示例
它是如何工作的?让我们来看一个简单的例子。

    #region 抽象部分

 

    public class Abstraction

    {

        #region 成员

 

        private Bridge _bridge;

 

        #endregion

 

        #region 构造函数

 

        /// <summary>

        /// 使用给定的桥接构造一个新的 Abstraction 对象

        /// <param name="bridge">给定的桥接</param>

        /// </summary>

        ///

        public Abstraction(Bridge bridge)

        {

            _bridge = bridge;

        }

 

        #endregion

 

        #region 方法

 

        /// <summary>

        /// 此方法演示了通过其抽象调用桥接对象

        ///

        /// </summary>

        public void Operation()

        {

            Console.Write("使用");

            _bridge.OperationImplementation();

        }

 

        #endregion

    }

 

    #endregion

 

    #region 桥接及其实现

 

    public interface Bridge

    {

        void OperationImplementation();

    }

 

    public class BridgeImplementationA : Bridge

    {

        #region 桥接成员

 

        /// <summary>

        /// 执行实现 A 操作

        /// </summary>

        public void OperationImplementation()

        {

            Console.Write("BridgeImplementationA");

        }

 

        #endregion

    }

 

    public class BridgeImplementationB : Bridge

    {

        #region 桥接成员

 

        /// <summary>

        /// 执行实现 B 操作

        /// </summary>

        public void OperationImplementation()

        {

            Console.Write("BridgeImplementationB");

        }

 

        #endregion

    }

 

    #endregion

您可以看到抽象部分包含一个桥接对象,并在
构造函数中获取桥接对象。因此,每当需要其中一个实现时,您都会将其
传递给构造函数,并且您不会与实现耦合。

摘要
总而言之,当您发现编写的操作
并不总是需要以相同的方式实现时,请使用桥接模式。
另一个原因是不将抽象与其实现绑定。

© . All rights reserved.