码迷,mamicode.com
首页 > Windows程序 > 详细

设计模式C#实现(九)——桥接模式

时间:2015-11-22 14:00:23      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

 

 

意图

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

适用性

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

结构

技术分享

实现

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

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

设计模式C#实现(九)——桥接模式

标签:

原文地址:http://www.cnblogs.com/castdream/p/4985588.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!