代码:Observable对象
mport java.util.Observable;
/**
* @author
* @description 天气数据(可观察者)
* @date 2018/3/7
*/
public class WeatherData extends Observable {
public void measurmentsChanged(){
setChanged();
notifyObservers();
}
public void setMesurements(float temperature,float humidity,float pressure){
this.temperature = temperature;
this.humidity = humidity;
this.pressure = pressure;
measurmentsChanged();
}
public float temperature;
public float humidity;
public float pressure;
public float getTemperature() {
return temperature;
}
public void setTemperature(float temperature) {
this.temperature = temperature;
}
public float getHumidity() {
return humidity;
}
public void setHumidity(float humidity) {
this.humidity = humidity;
}
public float getPressure() {
return pressure;
}
public void setPressure(float pressure) {
this.pressure = pressure;
}
}
public interface Displayment {
void display();
}
import java.util.Observable;
import java.util.Observer;
/**
* @authore
* @description 观察者
* @date 2018/3/7
*/
public class ForecastDisplay implements Observer,Displayment {
private float currentPressure = 29.93f;
private float lastPressure;
Observable observable;
public ForecastDisplay(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}
@Override
public void display() {
System.out.println("Forecast conditions: temperature " + currentPressure );
}
@Override
public void update(Observable o, Object arg) {
WeatherData weatherData = (WeatherData) o;
lastPressure = currentPressure;
currentPressure = weatherData.getPressure();
display();
}
}
调用数据:
public class WeatherStation {
public static void main(String[] args) {
WeatherData weatherData = new WeatherData();
ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);
weatherData.setMesurements(80,65,30);
}
}