概念
使用外觀模式,可以爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統更加容易。
代碼
類一
public class SunWukong {
public void pickUpWeapon(){
System.out.println("孫悟空拿起了金箍棒");
}
public void dropWeapon() {
System.out.println("孫悟空扔掉了金箍棒");
}
}
類二
public class ZhuBajie {
public void stop(){
System.out.println("豬八戒嘗試阻止大師兄");
}
public void complain(){
System.out.println("豬八戒開始埋怨");
}
}
類三
public class TangSeng {
public void scared(){
System.out.println("唐僧被嚇到了");
}
public void chant(){
System.out.println("唐僧念起來緊箍咒");
}
}
外觀類
public class Facade {
ZhuBajie zhuBajie;
SunWukong sunWukong;
TangSeng tangSeng;
public Facade() {
zhuBajie = new ZhuBajie();
sunWukong = new SunWukong();
tangSeng = new TangSeng();
}
public void monsterBoneComing(){
System.out.println("白骨精來了");
sunWukong.pickUpWeapon();
zhuBajie.stop();
tangSeng.scared();
}
public void monsterBoneKilled(){
System.out.println("白骨精");
sunWukong.dropWeapon();
zhuBajie.complain();
tangSeng.scared();
}
}
客戶端
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.monsterBoneComing();
facade.monsterBoneKilled();
}
}
// 白骨精來了
// 孫悟空拿起了金箍棒
// 豬八戒嘗試阻止大師兄
// 唐僧被嚇到了
// 白骨精
// 孫悟空扔掉了金箍棒
// 豬八戒開始埋怨
// 唐僧被嚇到了
特點
使用設計模式,可能會產生一系列小的類,逐個調用可能會很麻煩,使用外觀模式可以一起調用這些類的方法。或者在層與層之間創建外觀,提供一個簡單的接口,降低耦合度。維護一箇舊的系統時,也可以使用外觀模式,使用外觀模式維護舊系統的所有接口,新的系統只負責與外觀模式暴露的接口對接,降低新舊系統的關聯性。