Java設計模式 之 外觀模式
外觀模式在設計模式中是比較簡單,假設我們現在要模擬小米手機開機到關機的過程,小米由 CPU、屏幕 及 揚聲器 組成,新建代碼如下:
//CPU
public class CPU {
public void start() {
}
public void end() {
}
}
//屏幕
public class Screen {
public void on() {
}
public void off() {
}
}
//揚聲器
public class Speaker {
public void open() {
}
public void stop() {
}
}
我們一般測試一個手機開關機,需要經過開啓CPU,屏幕,揚聲器,關閉CPU,屏幕,揚聲器等過程,代碼如下:
public class PhoneController {
private static CPU cpu = new CPU();
private static Screen screen = new Screen();
private static Speaker speaker = new Speaker();
public static void main(String[] args) {
// 開關機
cpu.start();
screen.on();
speaker.open();
cpu.end();
screen.off();
speaker.stop();
}
}
我們會發現開啓手機的流程是否複雜,假設如果我們開機還需要增加其他操作, 比如開啓震動器,又需要增加代碼且不易整理 ,這時候我們就可以使用外觀模式,暴露個接口出來。
外觀模式實現
如我們新建一個小米手機,模擬開機和關機兩種狀態,並把對應的操作放進去,代碼如下:
public class XiaoPhone {
private CPU cpu = new CPU();
private Screen screen = new Screen();
private Speaker speaker = new Speaker();
// 開機
public void start() {
cpu.start();
screen.on();
speaker.open();
}
// 關機
public void end() {
cpu.end();
screen.off();
speaker.stop();
}
}
在下面只需要執行下面的幾句代碼,把具體的操作隱藏在內部,代碼如下:
XiaoPhone phone = new XiaoPhone();
phone.start();
phone.end();
我們最後來看,外觀模式的定義,外觀模式 提供了一個統一的接口,用來訪問子系統中的一羣接口。外觀模式定義了一個高層接口,讓子系統更容易使用。
統一的接口 :開機 / 關機
子系統中的一羣接口 : 開啓CPU,屏幕,揚聲器 / 關閉CPU,屏幕,揚聲器
其他模式可點擊鏈接進目錄閱讀了解:http://blog.csdn.net/xiao_wanzi94/article/details/78118092