设计模式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.实现细节对客户透明

posted @ 2015-11-22 13:10  妖刀Dreamcast  阅读(...)  评论(... 编辑 收藏