基本概念
外觀模式(Façade Pattern):他爲子系統中的一組接口提供一個統一的高層接口。使子系
統更容易使用。外觀模式通過一個外觀接口讀/寫子系統接口
的數據資源,而客戶可以通過外觀接口讀取內部資源庫,不與子系統產生交互。
概念解析:當我們寫的程序裏有很多方法,而這些方法的執行又要按一定的順序執行,如
果我們每次調用的時候都按一定的順序調用,我們必須記清順序,這樣來就很
麻煩,每次調用要寫的代碼量也很大。這時我們引入外觀模式,把調用的代碼
封裝到一個類裏面,這個類提供一個接口供我們調用,我們只需要調用這個接
口,就可以實現程序調用。
模式類圖:
外觀模式靜態類圖
使用場合:(1)、一個軟件的複雜度比較高,需要一個更高級別的簡單接口簡化對子系統的操作時。
(2)、當使用端與實現類之間有太多的相依性,需要降低使用端與子系統或子系統間的耦合性,增加子系統的獨立性。
(3)、當子系統是相互依存的,需要層級化子系統,簡化子系統之間相依性的時候,可以使用外觀模式。
實例分析:製作糖醋排骨
假設製作過程可以分爲以下四步:(這四步必選按順序執行)
1、 第一步。。。。。。
2、 第二步。。。。。。
3、 第三步。。。。。。
4、 第四步。。。。。。
先定義一個製作糖醋排骨的接口,然後在具體實現接口裏的方法。接着在定義一個外觀接口
來,在接口裏面寫一個製作他不敢粗排骨的方法,然後實現該接口。接就可以測試啦。下面
是具體的代碼。
//創建糖醋排骨接口
public interface ISpareribs {
public void prepair();//準備材料
public void presever();//醃製排骨
public void fry();//炸排骨
public void juice();//調汁
}
//實現 ISpareribs裏的具體方法
public class Spareribs implements ISpareribs {
public void prepair(){
System.out.println("第一步。。。。。");
}
public void presever(){
System.out.println("第二部。。。。。");
}
public void fry(){
System.out.println("第三部。。。。。。");
}
public void juice(){
System.out.println("第四部。。。。。。");
}
}
//創建外觀接口
public interface ICookFacade {
public void cookSpareribs();//製作糖醋排骨的方法
}
//實現外觀 製作糖醋排骨的具體步驟
public class CookFacade implements ICookFacade {
private final ISpareribs spareribs=new Spareribs();
public void cookSpareribs(){
this.spareribs.prepair();
this.spareribs.presever();
this.spareribs.fry();
this.spareribs.juice();
}
}
//測試程序
public class Client {
public static void main(String args[]){
ICookFacade cookFacade=new CookFacade();
cookFacade.cookSpareribs();
System.out.println("製作完成!");
}
}
內容來源
軟件祕笈--設計模式那點事
鄭阿奇 主編