java外觀模式--程序員都明白的模式

   好了。上一篇我們講完了代理模式,這篇文章,我們來認識一下外觀模式。外觀模式其實很簡單,因爲這個模式我們大多數程序員都會經常用到,只是我們不知道這就叫外觀模式。比如說,領導讓你完成一個excel表格導入日誌數據的功能。那你需要寫一個讀取excel表格數據的工具類。然後再寫一個從讀取到的數據篩選出符合格式的日誌數據的方法,然後再寫一個日誌入庫的方法。這幾個方法都是不同的作用,只爲了完成導入的功能。而你的領導不管你是怎麼實現的,反正給你一個excel表格。你就把數據導入就好了。你和領導交互,但是領導不需要知道具體實現,而這個就是外觀模式。

   好,照舊還是寫一個例子。我們來用代碼實現一個電腦開機的例子,藉此來表現外觀模式。首先,電腦有cpu,內存,和硬盤。要想電腦開機,得這些硬件都能運行纔可以。

因爲這個例子的代碼太簡單,所以一次全部列出來吧:

public class CPU {

    public void startCpu(){
        System.out.println("cpu start!");
    }
    public void stopCpu(){
        System.out.println("cpu stop!");
    }

}

public class Disk {
    public void startDisk(){
        System.out.println("disk start!");
    }
    public void stopDisk(){
        System.out.println("disk stop!");
    }
}

public class Memory {
    public void startMemory(){
        System.out.println("start memory!");
    }
    public void stopMemory(){
        System.out.println("stop memory!");
    }
}

public class Computer {
    public Computer() {
    }

    public void startComputer(){
        CPU cpu = new CPU();
        Disk disk = new Disk();
        Memory memory = new Memory();
        cpu.startCpu();
        disk.startDisk();
        memory.startMemory();
    }

    public void stopComputer(){
        CPU cpu = new CPU();
        Disk disk = new Disk();
        Memory memory = new Memory();
        cpu.stopCpu();
        disk.stopDisk();
        memory.stopMemory();
    }

}

public class FacadeTest {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.startComputer();
        computer.stopComputer();
    }
}

輸出結果爲:

cpu start!
disk start!
start memory!
cpu stop!
disk stop!
stop memory!

     好了。看完這個例子,應該對外觀模式又加深了印象了。在這個電腦開機的例子中呢,Computer類是扮演了和用戶交互的角色了,假如我們想開機,只需要執行Computer類的startComputer方法就可以了。不需要接觸到startComputer方法中會調用到哪些類,也不管是先啓動CPU還是內存,總之可以起來就ok。這裏也體現了設計模式中降低耦合的原則。好了,外觀模式就介紹到這裏。

文末附送一句歌詞

陽光總在風雨後,烏雲上有晴空

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章