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();
            }
    
        }

    输出结果:

  • 相关阅读:
    当···时发生了什么?
    数据存储-3、数据库分库分表思路
    数据存储-2、反模式设计
    数据存储-1、MySQL 索引使用的注意事项
    锁机制-4、synchronized 与 lock 的区别
    锁机制-3、synchronize 实现原理
    锁机制-1、乐观锁与悲观锁以及乐观锁的一种实现方式
    线程-11、线程的生命周期
    线程-10、线程池的几种方式
    线程-9、线程池的实现原理
  • 原文地址:https://www.cnblogs.com/castdream/p/4745041.html
Copyright © 2011-2022 走看看