标签:
外观模式——提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口让子系统更容易使用。
一个外观包含了为许多对象和对他们的操作,使得重复这些操作更方便。
假如客厅里有灯(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(); } }
输出结果:
标签:
原文地址:http://www.cnblogs.com/castdream/p/4745041.html