1. 程式人生 > >大話設計模式-外觀模式

大話設計模式-外觀模式

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{
    public
void 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 = new
SunSystem4(); } 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

大話設計模式-外觀模式