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

《Head First设计模式》C#实现(三)——外观模式

时间:2015-08-21 11:11:27      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

外观模式——提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口让子系统更容易使用。

  技术分享

  一个外观包含了为许多对象和对他们的操作,使得重复这些操作更方便。

  假如客厅里有灯(Lights)

  

class Lights
    {
        public void on()
        {
            Console.WriteLine("Lights on");
        }
        public void off()
        {
            Console.WriteLine("Lights off");
        }
    }

  电视(TV)

  

class TV
    {
        public void on()
        {
            Console.WriteLine("TV on");
        }
        public void off()
        {
            Console.WriteLine("TV off");
        }
    }

 

  和光盘播放器(DVDplaer)

  

class DvdPlayer
    {
        public void on()
        {
            Console.WriteLine("DVD player on.");
        }
        public void off()
        {
            Console.WriteLine("DVD player off");
        }
        public void play()
        {
            Console.WriteLine("Start playing");
        }
        public void end()
        {
            Console.WriteLine("End End playing");
        }
    }

   可以定义一个外观——影院模式,影院模式提供开始看电影和结束电影两个方法,分别对应一系列的操作。

 class Facade
    {
        TV tv;
        DvdPlayer dvd;
        Lights lights;

        public Facade(TV tv, DvdPlayer dvd, Lights lights)
        {
            this.tv = tv;
            this.dvd = dvd;
            this.lights = lights;
        }
        public void watchMovie()
        {
            Console.WriteLine("Get ready to watch a movie");
            lights.off();
            tv.on();
            dvd.on();
            dvd.play();
        }
        public void endMovie()
        {
            Console.WriteLine("\nShutting movie theater down..");
            lights.on();
            dvd.end();
            dvd.off();
            tv.off();
        }
    }

   这样就有了方便的一键影院模式,而不用每次都‘亲自‘操作各种设备。

class Program
    {
        static void Main(string[] args)
        {
            TV tv = new TV();
            DvdPlayer dvd = new DvdPlayer();
            Lights lights = new Lights();
            Facade facade = new Facade(tv,dvd,lights);
            facade.watchMovie();
            facade.endMovie();
            Console.ReadKey();
        }

    }

输出结果:

技术分享

《Head First设计模式》C#实现(三)——外观模式

标签:

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

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