C#設計模式:外觀模式(Facade Pattern)
阿新 • • 發佈:2018-03-29
避免 linq 訪問 客戶端 這一 存在 www 針對 public
一,什麽是外觀模式?
外觀模式:為子系統中的一組接口提供一個一致的界面,定義一個高層接口,這個接口使得這一子系統更加容易使用。
二,我們看看代碼的實現
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 = newFacade("中國人"); 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》而外觀模式則是將多個子系統的接口包裝起來,實現降低耦合和共同調用,和適配器模式的意圖是不一樣的
C#設計模式:外觀模式(Facade Pattern)