一、介紹
外觀模式提供一個統(tǒng)一接口去訪問子系統(tǒng)的一組接口,簡化外部客戶端對子系統(tǒng)的調(diào)用,降低客戶端和子系統(tǒng)的耦合度,客戶端不需要關(guān)注子系統(tǒng)復(fù)雜的依賴關(guān)系和實現(xiàn)邏輯,只需要和外觀接口交互即可。
二、代碼實例
子系統(tǒng)1
public class WindowManager {
public void createWindow(){
System.out.println("創(chuàng)建一個window");
}
public void destroyWindow(){
System.out.println("銷毀一個window");
}
}
子系統(tǒng)2
public class Canvas {
public void draw(){
System.out.println("繪制一個圖形");
}
public void clear(){
System.out.println("清除空間");
}
}
子系統(tǒng)3
public class EventManager {
public void event(){
System.out.println("一個點擊事件");
}
public void remove(){
System.out.println("刪除一個事件");
}
}
外觀類
public class PhoneFacade {
private final WindowManager mWindowManager;
private final Canvas mCanvas;
private final EventManager mEventManager;
public PhoneFacade(WindowManager windowManager, Canvas canvas, EventManager eventManager) {
this.mWindowManager = windowManager;
this.mCanvas = canvas;
this.mEventManager = eventManager;
}
public void init(){
mWindowManager.createWindow();
mCanvas.draw();
mEventManager.event();
}
public void clear(){
mEventManager.remove();
mCanvas.clear();
mWindowManager.destroyWindow();
}
}
四、總結(jié)
外觀模式給我的感覺還是挺好理解的,提供一個統(tǒng)一的接口去調(diào)用各個子系統(tǒng),客戶端和外觀類交互,不用去關(guān)心各個子系統(tǒng)的實現(xiàn)細節(jié),感覺就是Java的封裝特性。