C#设计模式:外不雅观模式(Facade Pattern)

时间:2021-12-12 03:02:32

一,什么是外不雅观模式?

外不雅观模式:为子系统中的一组接口供给一个一致的界面,界说一个高层接口,这个接口使得这一子系统越发容易使用。

二,我们看看代码的实现

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _10.外不雅观模式 { class Program { static void Main(string[] args) { //不存在外不雅观类是我们的挪用要领是这样的,如下代码; //People p = new People("中国人"); //Event e = new Event(); //Console.Write(p.people); //e.Say(); //外不雅观系统,跟以上代码对照,,我们可以知道:外不雅观模式供给了一个统一的接口,用来访谒子系统中的一群接口。而不用实例过多,同时也降低了客户端和子系统之间的紧耦合,如People和Event的实例都不在Program中了 Facade fa = new Facade("中国人"); fa.WhoEvent(); Facade fa1 = new Facade("美国人"); fa1.WhoEvent(); Console.Read(); } } /// <summary> /// 外不雅观类 /// </summary> public class Facade { private Event ev { get; set; } private People pe { get; set; } public Facade(string people) { ev = new Event(); pe = new People(people); } public void WhoEvent() { Console.Write(pe.people); ev.Say(); ev.Eat(); } } /// <summary> /// 相当于行为子系统 /// </summary> public class Event { public void Say() { Console.Write("措辞和"); } public void Eat() { Console.WriteLine("用饭"); } } /// <summary> /// 相当于人子系统 /// </summary> public class People { public string people { get; set; } public People(string p) { this.people = p; } } }

三,在上面代码中,我们的代码布局是:客户端--》Facade--》n个子系统(People和Event等)

1》在外不雅观模式中我们,完全将子系统的实例放到外不雅观里面,这里我们可以将供给了一个一直的界面,客户端可以直接通过外不雅观类来挪用内部子系统中要领,而制止了耦合

四,那外不雅观模式和适配器模式有什么区别呢?

适配器:Adapter适配器模式是将两个不兼容的类组合在一起使用

外不雅观模式:为子系统中的一组接口供给一个一致的界面

按照以上两个解释我们可以知道:

1》适配器是针对单个东西,而外不雅观模式是针对多个东西(子系统)的

2》适配器是对单个东西的接口适配,从而实现现有了类可以适配当前系统的功效

3》而外不雅观模式则是将多个子系统的接口包装起来,实现降低耦合和配合挪用,和适配器模式的意图是不一样的