11【結構型】淺談 外觀模式 理解與使用~
阿新 • • 發佈:2019-10-25
外觀模式
外觀模式,用於隱藏系統的複雜性,並且向客戶端提供一個可以操作訪問系統的介面,來隱藏系統的複雜性。
舉個例子:
好比系統就是我們手裡面的一臺電腦,我們都知道,電腦內部很複雜,但是我們操作的時候,就好比只需要摁一下開機按鈕,電腦就會啟動起來,
我們無需關注電腦是如何啟動起來的。這就好比一個複雜的系統,通過一個電源鍵的操作,使得整個複雜的過程變得簡化。客戶端只需要關注這個簡化的
介面(電源鍵)即可操作複雜系統。
用途:降低複雜系統的內部複雜聯絡,整個系統只需要提供一個簡便的方法即可(電源鍵啟動方法)
關鍵:要處理好客戶端和複雜系統之間的一層層的呼叫關係。好比首先要啟動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
&n