天天看點

設計模式之外觀模式(Facade Pattern)外觀模式的優缺點外觀模式的優缺點

外觀模式外部通路内部複雜代碼的一個接口,舉個例子,我們知道打開一台電腦很簡單,隻要按開機鍵,但實際上在背景我們看不到的地方,計算機進行了很多複雜的工作,比如,cpu。記憶體。硬碟等的啟動。但我們不需要親自去啟動這些複雜的步驟,我們隻需要知道按下開機鍵,電腦就會啟動。

實際上這裡就是使用了外觀模式,外觀模式提供了一個簡單的接口,為我們封裝好了通路内部代碼的複雜操作,有了外觀模式,我們隻需要簡單的按下開機鍵,就可以自動調用cpu。硬碟。記憶體的方法幫我們啟動電腦。

設計模式之外觀模式(Facade Pattern)外觀模式的優缺點外觀模式的優缺點

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.]

外觀模式的優缺點

優點

  • 減小系統間的互相依賴
  • 提高靈活性
  • 減小系統依賴
  • 提高安全性

缺點

  • 不符合開閉原則,對修改關閉,對擴充開放

    我們知道外觀模式将子系統封裝起來,我們無法修改子系統,隻能外部擴充