1、 概念
為子系統中的一組介面提供一個一致的介面,此模式定義了一個高層介面,該介面使子系統更加容易使用。
2、 模型
public class ModularA { public void ModularAMethod() { Console.WriteLine("A模組的方法。"); } } public class ModularB { public void ModularBMethod() { Console.WriteLine("B模組的方法。"); } } public class ModularC { public void ModularCMethod() { Console.WriteLine("C模組的方法。"); } } public class FaCade { private ModularA mda; private ModularB mdb; private ModularC mdc; public FaCade() { mda = new ModularA(); mdb = new ModularB(); mdc = new ModularC(); } public void FaCadeMethod()//該方法負責對外的聯絡 { mda.ModularAMethod(); mdb.ModularBMethod(); mdc.ModularCMethod(); } }
用戶端
//如果不用面板模式,則用戶端分別要調用ModularA,ModularB,ModularC,耦合就強了。//ModularA mda = new ModularA();//ModularB mdb = new ModularB();//ModularC mdc = new ModularC();//mda.ModularAMethod();//mdb.ModularBMethod();//mdc.ModularCMethod(); //使用面板模式,用戶端只關心FaCade的方法,之和這一個類發生聯絡,減少了耦合。FaCade fd = new FaCade();fd.FaCadeMethod();Console.ReadLine();
結果
其實這種模式,在平時寫代碼時那是經常使用的,有時候寫一個單獨的功能模組,就有這樣的一個類,負責與外界交流,接受傳入的參數,並負責傳出結果,外部是不需要關心模組如何?,往往是引用這個類傳入某些值,該類再傳出結果,至於如何?功能那就是這個模組的事了。因此減少了這個模組與外界的接觸,而且如果該模組的內部演算法除了問題,不會影響其他模組運行,只是表現在結果不正確而已。而且我一般寫單獨模組都把裡面的public除了要和外界互動的類,其它都寫成internal,強制外面訪問不到內部的細節。