11【結構型】淺談 外觀模式 理解與使用~

  • 2019 年 10 月 24 日
  • 筆記

外觀模式

外觀模式,用於隱藏系統的複雜性,並且向客戶端提供一個可以操作訪問系統的介面,來隱藏系統的複雜性。

 

舉個例子:


好比系統就是我們手裡面的一台電腦,我們都知道,電腦內部很複雜,但是我們操作的時候,就好比只需要摁一下開機按鈕,電腦就會啟動起來,

我們無需關注電腦是如何啟動起來的。這就好比一個複雜的系統,通過一個電源鍵的操作,使得整個複雜的過程變得簡化。客戶端只需要關注這個簡化的

介面(電源鍵)即可操作複雜系統。

用途:降低複雜系統的內部複雜聯繫,整個系統只需要提供一個簡便的方法即可(電源鍵啟動方法)

關鍵:要處理好客戶端和複雜系統之間的一層層的調用關係。好比首先要啟動CPU,然後再給記憶體供電,最後讀取硬碟數據 這種順序要處理好!!

優點:減少系統依賴性、提高整個系統的靈活性、

使用:一個複雜的模組為子系統提供訪問模組

 

程式碼理解:

這裡建立一個模型:電腦的模型,我們來模擬一個電腦的啟動和關閉過程,按下電源鍵:CPU供電,然後給記憶體供電,最後讀取硬碟數據,顯示開機畫面等

斷電後,依次關閉以上開啟的內容

 

電腦最基本的兩個方法,啟動和關閉方法。

public interface Computer {      //啟動方法      void start();      //結束方法      void end();  }

這裡分別建立三個類來實現電腦的介面,有CPU/記憶體/硬碟 這裡只是舉例一個CPU的啟動和關閉過程,其他的就不一一舉例

public class CPU implements Computer {        @Override      public void start() {          System.out.println("CPU供電完成");      }        @Override      public void end() {          System.out.println("CPU斷電關閉");      }  }

這裡提供的一個客戶端,就好比一個電源按鈕,實例化一個電源鍵,創建好需要的對象資訊,按下電源鍵執行open方法,按照順序構建

public class Face {        //實例化後的CPU 記憶體與硬碟      private Computer cpu;        private Computer memory;        private Computer hdd;        //開機構建      public Face(){            //創建CPU/記憶體/硬碟          cpu = new CPU();          memory = new Memory();          hdd = new HDD();      }        //啟動電腦      public void open(){            cpu.start();          memory.start();          hdd.start();      }      //關閉電腦      public void close(){          cpu.end();          memory.end();          hdd.end();      }  }

//進行一個簡單的測試

    public static void main(String[] args) {            //創建客戶端,實例化電源按鈕          Face face = new Face();          //電源按鈕啟動          face.open();          System.out.println("----------------------");          face.close();      }

效果展示:

 

這裡就簡單的模擬一個電腦啟動的方式來理解這個外觀模式的使用:

最好的理解方法就是參考生活中的常識去理解,這樣才更加深刻理解,更好的學會去使用它;

 

參考:https://www.runoob.com/design-pattern/facade-pattern.html

碼云:https://gitee.com/mrc1999/23GOF