1. 程式人生 > >11【結構型】淺談 外觀模式 理解與使用~

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

外觀模式

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

 

舉個例子:


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

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

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

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

關鍵:要處理好客戶端和複雜系統之間的一層層的呼叫關係。好比首先要啟動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