设计模式--桥接模式

概念
将抽象和现实解耦,是的两者可以独立的变化。


使用场景

  • 不希望或不适用使用继承的场景
  • 接口或抽象类不稳定的场景
  • 重用性要求较高的场景

何时使用
实现系统可能有多个角度分类,每一种角度都可能变化。


优点

  • 抽象和现实的分离

  • 扩展能力好
    接口允许进行扩展

  • 实现细节对客户透明
    客户不需要关心细节的实现


缺点

  • 增加系统的理解于设计难度

结构图

设计模式--桥接模式


  • Implementor

角色说明

  • Abstraction
    抽象化角色
    定义出角色的行为,同时保存一个对现实化角色的引用

  • Implementor
    实现化角色
    是接口/抽象类

  • RefinedAbstraction
    修正抽象化角色
    引用实现化角色对抽象化角色进行修正

  • ConcreteImpementor
    具体实现化角色
    实现接口或抽象类定义的方法和属性


实现

  • Implementor
abstract class Implementor
    {
        public abstract void Operation();
    }
  • ConcreteImplementorA
class ConcreteImplementorA :Implementor
    {
        public override void Operation()
        {
            Console.WriteLine("具体实现A的方法执行");
        }
    }
  • Abstraction
 class Abstraction
    {
        protected Implementor implementor;

        public void SetImplementor(Implementor implementor )
        {
            this.implementor = implementor;
        }

        public  virtual void Operation()
        {
            implementor.Operation();
        }
    }
  • RefinedAbstraction
class RefinedAbstraction : Abstraction
    {
        public override void Operation()
        {
           implementor.Operation();
        }

    }
  • Client
 static void Main(string[] args)
        {

            Abstraction ab = new RefinedAbstraction();

            ab.SetImplementor(new ConcreteImplementorA());
            ab.Operation();
            Console.Read();
        }