1. 程式人生 > >facade - 物件結構型模式

facade - 物件結構型模式

   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
   }
}