** 注意:Observable,Observer是java.util.*包裏的 **java
氣象數據ide
package com.example.demo4.tends; import java.util.Observable; public class WeatherDate extends Observable{ private float temperature; private float humidity; private float pressure; public WeatherDate(){ } public void measurementsChanged(){//測量值改變 setChanged(); notifyObservers(); } public void setMeasurements(float temperature,float humidity,float pressure){//設置測量值 this.temperature=temperature; this.humidity=humidity; this.pressure=pressure; measurementsChanged(); } public float getTemperature() { return temperature; } public float getHumidity() { return humidity; } public float getPressure() { return pressure; } }
顯示當前條件測試
package com.example.demo4.tends; import com.example.demo4.face.DisPlayElement; import java.util.Observable; import java.util.Observer; public class CurrentConditionsDisplay implements Observer,DisPlayElement { Observable observable; private float temperature; private float humidity; private float pressure; public CurrentConditionsDisplay(Observable observable){ this.observable=observable; observable.addObserver(this); } @Override public void update(Observable observable, Object object) { if(observable instanceof WeatherDate){ this.temperature=((WeatherDate) observable).getTemperature(); this.humidity=((WeatherDate) observable).getHumidity(); this.pressure=((WeatherDate) observable).getPressure(); display(); } } @Override public void display() { System.out.println("Current conditions: "+temperature+"F degrees and "+humidity+"% humidity"); } }
測試類this
package com.example.demo4.main; import com.example.demo4.tends.CurrentConditionsDisplay; import com.example.demo4.tends.WeatherDate; public class WeatherStation { public static void main(String[] args) { WeatherDate weatherDate=new WeatherDate(); weatherDate.setMeasurements(80,81,82); CurrentConditionsDisplay ccd=new CurrentConditionsDisplay(weatherDate); ccd.update(weatherDate,null); } }