zoukankan      html  css  js  c++  java
  • 设计模式C#实现(三)——外观模式

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

      

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

      假如客厅里有灯(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("
    Shutting 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();
            }
    
        }

    输出结果:

  • 相关阅读:
    HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)
    HDU Wooden Sticks
    HDU 3664 Permutation Counting
    javascript DOM添加元素,使用节点属性
    SQL server查询数据类型为ntext是空或NULL值
    TSQL Pivot Tables(行列转换) in SQL Server 2005/2008
    ASP.NET 3.5(c#)区域化设置(LCID)
    Sql 脚本导入EXCEL数据
    asp.net 3.5 csharp 实现事务
    asp.net3.5 csharp: How to show HTML content in calendar tooltip?
  • 原文地址:https://www.cnblogs.com/castdream/p/4745041.html
Copyright © 2011-2022 走看看