一征椒、介紹
外觀模式提供一個(gè)統(tǒng)一接口去訪問(wèn)子系統(tǒng)的一組接口瑟捣,簡(jiǎn)化外部客戶端對(duì)子系統(tǒng)的調(diào)用,降低客戶端和子系統(tǒng)的耦合度嚎卫,客戶端不需要關(guān)注子系統(tǒng)復(fù)雜的依賴關(guān)系和實(shí)現(xiàn)邏輯嘉栓,只需要和外觀接口交互即可。
二拓诸、代碼實(shí)例
子系統(tǒng)1
public class WindowManager {
public void createWindow(){
System.out.println("創(chuàng)建一個(gè)window");
}
public void destroyWindow(){
System.out.println("銷毀一個(gè)window");
}
}
子系統(tǒng)2
public class Canvas {
public void draw(){
System.out.println("繪制一個(gè)圖形");
}
public void clear(){
System.out.println("清除空間");
}
}
子系統(tǒng)3
public class EventManager {
public void event(){
System.out.println("一個(gè)點(diǎn)擊事件");
}
public void remove(){
System.out.println("刪除一個(gè)事件");
}
}
外觀類
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é)
外觀模式給我的感覺(jué)還是挺好理解的,提供一個(gè)統(tǒng)一的接口去調(diào)用各個(gè)子系統(tǒng)奠支,客戶端和外觀類交互馋辈,不用去關(guān)心各個(gè)子系統(tǒng)的實(shí)現(xiàn)細(xì)節(jié),感覺(jué)就是Java的封裝特性倍谜。