外觀模式外部通路内部複雜代碼的一個接口,舉個例子,我們知道打開一台電腦很簡單,隻要按開機鍵,但實際上在背景我們看不到的地方,計算機進行了很多複雜的工作,比如,cpu。記憶體。硬碟等的啟動。但我們不需要親自去啟動這些複雜的步驟,我們隻需要知道按下開機鍵,電腦就會啟動。
實際上這裡就是使用了外觀模式,外觀模式提供了一個簡單的接口,為我們封裝好了通路内部代碼的複雜操作,有了外觀模式,我們隻需要簡單的按下開機鍵,就可以自動調用cpu。硬碟。記憶體的方法幫我們啟動電腦。
Paste_Image.png
參看外觀模式的類圖,我們可以看到外觀模式将多個複雜的操作封裝起來,隻對外提供一個簡單的接口。
下面我們就簡單的實作一個外觀模式,以電腦的啟動為例:
class CPU {
public void processData() { }
}
class Memory {
public void load() { }
}
class HardDrive {
public void readdata() { }
}
/* Facade */
class Computer {
private CPU cpu;
private Memory memory;
private HardDrive hardDrive;
public Computer() {
this.cpu = new CPU();
this.memory = new Memory();
this.hardDrive = new HardDrive();
}
public void run() {
cpu.processData();
memory.load();
hardDrive.readdata();
}
}
class User {
public static void main(String[] args) {
Computer computer = new Computer();
computer.run();
}
}
複制
外觀模式将子系統的方法封裝起來,提供一個更上層的接口,提供更簡單的通路
![Upload Paste_Image.png failed. Please try again.]
外觀模式的優缺點
優點
- 減小系統間的互相依賴
- 提高靈活性
- 減小系統依賴
- 提高安全性
缺點
-
不符合開閉原則,對修改關閉,對擴充開放
我們知道外觀模式将子系統封裝起來,我們無法修改子系統,隻能外部擴充