深入解析C#设计模式中对桥接模式的具体运用

2019-12-26 17:37:56于海丽

来看一下经常用来被举例的汽车对象。
首先定义Abstraction。


public abstract class Car
  {
    public IEngine _engine;

    public Car(IEngine engine)
    {
      _engine = engine;
    }

    public virtual void Start()
    {
      _engine.Start();
    }

    public virtual void Stop()
    {
      _engine.Stop();
    }
  }

接着实现不同的汽车类型。


public class Bus : Car
  {
    public Bus(IEngine engine)
      : base(engine)
    {
    }

    public override void Start()
    {
      base.Start();
      Console.WriteLine("Bus Start");
    }

    public override void Stop()
    {
      base.Stop();
      Console.WriteLine("Bus Stop");
    }
  }

  public class Limousine : Car
  {
    public Limousine(IEngine engine)
      : base(engine)
    {
    }

    public override void Start()
    {
      base.Start();
      Console.WriteLine("Limousine Start");
    }

    public override void Stop()
    {
      base.Stop();
      Console.WriteLine("Limousine Stop");
    }
  }

再定义第二个变化维度,即发动机的接口。


public interface IEngine
   {
     void Start();
     void Stop();
   }

最后实现不同的发动机。


public class GasEngine : IEngine
  {
    public void Start()
    {
      Console.WriteLine("Gas Engine Start");
    }

    public void Stop()
    {
      Console.WriteLine("Gas Engine Stop");
    }
  }

  public class DieselEngine : IEngine
  {
    public void Start()
    {
      Console.WriteLine("Diesel Engine Start");
    }

    public void Stop()
    {
      Console.WriteLine("Diesel Engine Stop");
    }
  }


注:相关教程知识阅读请移步到c#教程频道。