外觀模式

外觀模式

外觀模式:爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。

外觀模式結構圖:
這裏寫圖片描述

外觀模式結構圖代碼解析:

//四個子系統的類
class SubSystemOne{
    public void methodOne(){
        print("子系統方法一");
    }
}

class SubSystemTwo{
    public void methodTwo(){
        print("子系統方法二");
    }
}

class SubSystemThree{
    public void methodThree(){
        print("子系統方法三");
    }
}

class SubSystemFour{
    public void methodFour(){
        print("子系統方法四");
    }
}
//外觀類:外觀類需要了解子系統所有的方法或屬性,進行組合,以供外界調用。
class Facade{

    private SubSystemOne one;
    private SubSystemTwo two;
    private SubSystemThree three;
    private SubSystemFour four;

    public Facade(){
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }

    //外觀類方法,供外界調用。
    public void methodA(){
        print("方法組A()-------")
        one.methodOne();
        two.methodTwo();
        four.methodFour();
    }

    public void methodB(){
        print("方法組B()-------")
        two.methodTwo();
        four.methodFour();
        three.methodThree();
    }
}
//客戶端調用
class Mian(){
    public static void main(String[] args){
        Facade facade = new Facade();

        facade.methodA();
        facade.methodB();
    }
}

外觀模式完美的體現了依賴倒置原則和迪米特法則的思想,比較常用。

什麼時候使用外觀模式呢?從三個階段來看:
      首先,在設計初期階段,要有意識的將不同的兩個層分離。例如經典的三層架構,在層與層之間建立外觀類,降低耦合。
      其次,在項目開發階段,子系統往往因爲不斷的重構演化而變得越來越複雜,大多數模式使用時會產生很多很小的類,在客戶端調用時會帶來麻煩,增加外觀類可以提供一個簡單的接口,減少他們之間的依賴。
      最後,在維護一個遺留的大型系統時,並且這個系統難以維護和擴展,但它有很重要的功能,新的需求開發必須要依賴它,此時可以爲新系統開發一個外觀Facade類,來提供高度複雜的遺留代碼的比較清晰簡單的接口,讓新系統與Facade對象交互,Facade與遺留代碼交互所有複雜的工作。

發佈了53 篇原創文章 · 獲贊 43 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章