大話設計模式-外觀模式
阿新 • • 發佈:2018-12-02
color 依賴 外觀模式 代碼 兩個 sub idt 重構 str
外觀模式
外觀模式為子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
外觀系統完美的體現了依賴倒轉原則和迪米特法則的思想,所以是非常常用的模式之一。
外觀模式的使用時機
首先在設計初期階段,應該要有意識地將不同的兩個層分離,層與層之間建立外觀Facade,這樣可以為復雜的子系統提供一個簡單的接口,使得耦合度大大降低。
其次在開發階段子系統往往因為不斷的重構煙花而變得越來越復雜,增加外觀可以提供一個簡單的接口減少他們之間的依賴。
第三,在維護一個遺留的大型系統時,可能這個系統已經非常難以維護和擴展了,為新系統開發一個外觀類,來提供粗糙或高度復雜的遺留代碼的比較清晰簡單的接口,讓新系統與acade對象交互,Facade與遺留代碼交互所有復雜的工作。
外觀模式結構演示
子系統類:SubSystem
class SunSystem1{ public void Method1() => Console.WriteLine("子系統1方法1"); } class SunSystem2{ public void Method2() => Console.WriteLine("子系統2方法2"); } class SunSystem3{ public void Method3() => Console.WriteLine("子系統3方法3"); } class SunSystem4{ publicvoid Method4() => Console.WriteLine("子系統4方法4"); }
外觀類:Facade
class Facade{ SunSystem1 one; SunSystem2 two; SunSystem3 three; SunSystem4 four; public Facade(){ one = new SunSystem1(); two = new SunSystem2(); three = new SunSystem3(); four = newSunSystem4(); } public void MethodA(){ Console.WriteLine("方法組A"); one.Method1(); two.Method2(); four.Method4(); } public void MethodB(){ Console.WriteLine("方法組A"); two.Method2(); three.Method3(); } }
測試類:Program
//Main方法 Facade facade = new Facade(); facade.MethodA(); facade.MethodB(); //測試結果 方法組A 子系統1方法1 子系統2方法2 子系統4方法4 方法組A 子系統2方法2 子系統3方法3
大話設計模式-外觀模式