你的位置:首页 > ASP.net教程

[ASP.net教程]设计模式C#实现(九)——桥接模式


 

      • 意图
      • 适用性
      • 结构
      • 实现
      • 效果

 

意图

将抽象部分与它的实现部分分离,使它们都可以独立的变化。

适用性

1.不希望抽象和实现间有固定的绑定关系
2.类的抽象以及它的实现都可以通过生成子类的方法加以扩充
3.对抽象的实现部分的修改应对客户端不参产生影响
4.在多个对象中共享实现

结构

Bridge

实现

(这里所说的抽象层次和实现层次和面向对象的抽象和实现不同?把遥控器当作抽象,电视机当作实现是因为遥控器本身不会开关,只是命令电视机开关?这里抽象层次和实现层次的关系是聚合呀)
遥控器

public class RemoteControl  {    public TV tv;    public void On()    {      tv.On();    }    public void Off()    {      tv.Off();    }  }

电视

public interface TV  {    void On();    void Off();  }

具体的电视

  public class Sony:TV  {    public void On()    {      Console.WriteLine("SonyTV On.");    }    public void Off()    {      Console.WriteLine("SonyTV off");    }  }

具体的遥控器
可扩展

 public class ConcreteRemote:RemoteControl  {    public ConcreteRemote(TV tv)    {      this.tv = tv;    }    public void AutoOff(int ms)    {      Thread.Sleep(ms);      tv.Off();    }  }

客户

 class Program  {    static void Main(string[] args)    {      TV sony = new Sony();      ConcreteRemote cr = new ConcreteRemote(sony);      cr.On();      cr.AutoOff(5000);      Console.ReadKey();    }  }

运行结果
运行结果

效果

1.分离接口及其实现部分
2.提高可扩充性
3.实现细节对客户透明