設計模式(9)外觀模式
阿新 • • 發佈:2019-03-18
訪問 一個 離開 new ima eve ide isp http
我們每天上班回到家的時候都會做一系列的動作,像打開燈、打開電視和打開音響,用代碼描述就如下一樣。
public class Light { public void on() { System.out.println("打開了燈!"); } public void off() { System.out.println("關閉了燈!"); } }Light
public class Redio { public void on() { System.out.println(Redio"打開了音箱!"); } public void off() { System.out.println("關閉了音箱!"); } }
public class TV { public void on() { System.out.println("打開了電視!"); } public void off() { System.out.println("關閉了電視!"); } }TV
測試代碼
public staticvoid main(String[] args) { Light light = new Light(); Redio redio = new Redio(); TV tv = new TV(); System.out.println("回到了家"); light.on(); redio.on(); tv.on(); System.out.println("要離開家了"); light.off(); redio.off(); tv.off(); }
測試結果
我們發現,回到家需要打開這麽多東西,這對於上班回來疲憊的我們實在是太過於煎熬了,那能不能一下子就把所有的動作都執行了呢?方法是有的,就是使用外觀模式,我們只需要執行回家這個動作,就能實現這一系列的動作,做一個總和的操作。
添加的代碼如下
public class HomeAction { private Light light; private TV tv; private Redio redio; public HomeAction(Light light, TV tv, Redio redio) { this.light = light; this.tv = tv; this.redio = redio; } public void getHome() { light.on(); tv.on(); redio.on(); } public void leaveHome() { light.off(); tv.off(); redio.off(); } }HomeAction
測試代碼
public static void main(String[] args) { Light light = new Light(); Redio redio = new Redio(); TV tv = new TV(); HomeAction homeAction = new HomeAction(light, tv, redio); System.out.println("回到了家"); homeAction.getHome(); System.out.println("要離開家了"); homeAction.leaveHome(); }
測試結果
外觀模式提供了一個統一的接口,用來訪問子系統中的一群接口。外觀模式定義一個高層的接口,讓子系統更容易使用。
外觀模式並不是用來給接口添加新的功能,它是用減少外部和子系統的交互,松散耦合,從而讓外部能夠更簡單地使用子系統。
設計模式(9)外觀模式