定義 外觀模式(Facade),為子系統中的一組介面提供一個一致的界面,定義一個高層介面,這個介面使得這一子系統更加容易使用。 其實外觀模式,就已經比較容易理解了,舉個例子,你寫了個登陸系統,其實包含幾個步驟,首先驗證密碼,其次驗證用戶許可權,再其次查詢用戶的基礎信息,但是對於登陸的用戶來說,這些步驟
定義
外觀模式(Facade),為子系統中的一組介面提供一個一致的界面,定義一個高層介面,這個介面使得這一子系統更加容易使用。
其實外觀模式,就已經比較容易理解了,舉個例子,你寫了個登陸系統,其實包含幾個步驟,首先驗證密碼,其次驗證用戶許可權,再其次查詢用戶的基礎信息,但是對於登陸的用戶來說,這些步驟對他們來說是透明的,他們能看到的就是一個登陸的操作,至於你有多少個步驟,他們不關心,這樣的方式就是外觀模式
接下來我們來寫一個外觀模式的demo:
假如你有三個步驟分別為subA,subB,subC:
public class subA {
public void doA() {
System.out.println("subA");
}
}
public class subB {
public void doB() {
System.out.println("subB");
}
}
public class subC {
public void doC() {
System.out.println("subC");
}
}
然後我們再寫一個外觀類,把這些步驟組合到一起:
public class facade {
private subA a;
private subB b;
private subC c;
public facade() {
this.a = new subA();
this.b = new subB();
this.c = new subC();
}
public void combination(){
a.doA();
b.doB();
c.doC();
}
}
接下來用戶登陸的時候,只需要調用你的combination方法就可以了,我們來試試:
public static void main(String[] args) {
new facade().combination();
}
結果:
subA
subB
subC
我們為三個子系統增加了個一致的方法,這樣對於調用子系統的對象來說,就簡單實用了,也不會對子系統產生直接的依賴,這就是外觀模式.