facade - 物件結構型模式
阿新 • • 發佈:2018-12-18
1.意圖
為子系統提供一個一致的介面,facade模式定義了一個高層介面,這個介面使得
這一系統更加容易使用
2.參與者
Facade - 知道哪些子系統類負責處理請求
- 將客戶請求代理給適當的子系統物件
subsystem classess -實現子系統的功能
-處理有Facade物件指派的任務
-沒有Facade的相關資訊
3.結構
4.程式碼:
public class CarTemperature { private int temperature;//車內溫度 public int getTemperature() { return temperature; } public void setTemperature(int temperature) { this.temperature = temperature; } } public class System1 { private int temperature; //檢測溫度 public void checkTemperature(CarTemperature carTemperature) { this.temperature = carTemperature.getTemperature(); } public int getTemperature() { return temperature; } } public class System3 { private int temperature; //溫度控制系統 public boolean play(int temperature) { if(this.temperature<temperature){ System.out.println("傳送溫度超出舒適溫度的警報"); return true; } System.out.println("傳送溫度低於舒適溫度的警報"); return false; } public int getTemperature() { return temperature; } public void setTemperature(int temperature) { this.temperature = temperature; } } public class System2 { int state = 0;// //空調控制系統 public void play(boolean b) { if(b){ System.out.println("開啟空調開關開始降溫"); state = 1; }else{ System.out.println("關閉空調開關"); state = 0; } } public int getState() { return state; } public void setState(int state) { this.state = state; } } public class System4 { //溫度變化趨勢 public void declineTemperature(CarTemperature c){ c.setTemperature(c.getTemperature()-1); System.out.println("溫度上升一度,當前溫度為"+c.getTemperature()); } public void riseTemperature(CarTemperature c){ c.setTemperature(c.getTemperature()+1); System.out.println("溫度下降一度,當前溫度為"+c.getTemperature()); } } public class Client { public static void main(String[] args) { CarTemperature c =new CarTemperature(); c.setTemperature(21);//車內溫度50 Facade f =Facade.instance(); f.carSystem(c, 20);//設定合適溫度20 } }