快速上手設計模式10 - 外觀模式
阿新 • • 發佈:2018-12-18
外觀模式概念:隱藏系統的複雜性,並向客戶端提供了一個客戶端可以訪問系統的介面
很好理解的例子:電腦買好了,只需要按“開機”鍵就開機了,但對系統來講開機過程其實挺複雜的,這個開機鍵就是外觀模式的介面,而系統內部的複雜操作不需要外界知道。
開機過程需要啟動主機板、CPU、記憶體
/** 主機板類 */
public class Mainboard {
public void startMainboard() {
System.out.println("正在啟動主機板");
}
}
/** CPU類 */
public class CPU {
public void startCPU() {
System.out.println("正在啟動CPU");
}
}
/** 記憶體類 */
public class Memory {
public void startMemory() {
System.out.println("正在啟動記憶體");
}
}
然後建立外觀類,對外提供一鍵開機功能
public class ComputerFacade {
private CPU cpu;
private Mainboard mainboard;
private Memory memory;
public ComputerFacade() {
cpu = new CPU();
mainboard = new Mainboard();
memory = new Memory();
}
/** 一鍵開機 */
public void startComputer() {
mainboard.startMainboard();
cpu.startCPU();
memory.startMemory();
System.out.println("...開機完成...");
}
}
客戶端
ComputerFacade facade=new ComputerFacade();
facade.startComputer();//一鍵開機
輸出結果
正在啟動主機板
正在啟動CPU
正在啟動記憶體
...開機完成...
外觀模式的核心就是建立一個外觀類,對外隱藏複雜的內部操作,同時提供一個高層的入口供外部訪問,簡化了客戶端的操作。
總結:
1. 外觀模式比較簡單,主要是為複雜的模組或子系統提供外界訪問的簡單入口,因此適用於子模組相對獨立的複雜操作。
2. 外觀模式讓各個子模組相互解耦,增加了系統的靈活性。