* 实现Java内置的观察者接口,布告板不变
* @author wwj
*
*/
public class CurrentConditionDisplay implements Observer, DisplayElement{
Observable observable;
private float temperature;
private float humidity;
public CurrentConditionDisplay(Observable observable) {
this.observable = observable;
observable.addObserver(this); //登记为观察者
}
@Override
public void display() {
System.out.println("Current conditions: " + temperature + "F degrees and " + humidity + "% humidity");
}
/**
* 在这个方法当中,先确定可观察者属于WeatherData类型,然后利用getter方法获取温度和温度测量值,最后调用display();
*/
@Override
public void update(Observable obs, Object arg) {
if(obs instanceof WeatherData) {
WeatherData weatherData = (WeatherData) obs;
this.temperature = weatherData.getTemperature();
this.humidity = weatherData.getHumidity();
display();
}
}
}
[java]
package weatherObservable;
import java.util.Observable;
import java.util.Observer;
/**
* 天气预报布告板
* @author wwj
*
*/
public class ForecastDisplay implements Observer, DisplayElement {
private Observable observable;
private float currentPressure = 29.92f; //当前气压
private float lastPressure; //以往气压
public ForecastDisplay(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}
@Override
public void display() {
System.out.println("Forcast:");
if(currentPressure > lastPressure) {
System.out.println("Improving weather on the way!");
} else if(currentPressure == lastPressure) {
System.out.println("more of the same");
} else if(currentPressure < lastPressure) {
System.out.println("Watch out for cooler, rainy weather");
}
}
@Override
public void update(Observable o, Object arg) {
if (o instanceof WeatherData) {
WeatherData weatherData = (WeatherData)observable;
lastPressure = currentPressure;
currentPressure = weatherData.getPressure();
display();
}
}
}
package weatherObservable;
import java.util.Observable;
import java.util.Observer;
/**
* 天气预报布告板
* @author wwj
*
*/
public class ForecastDisplay implements Observer, DisplayElement {
private Observable observable;
private float currentPressure = 29.92f; //当前气压
private float lastPressure; //以往气压
public ForecastDisplay(Observable observable) {
this.observable = observable;
observable.addObserver(this);
}
@Override
public void display() {
System.out.println("Forcast:");
if(currentPressure > lastPressure) {
System.out.println("Improving weather on the way!");
} else if(currentPressure == lastPressure) {
System.out.println("more of the same");
} else if(currentPressure < lastPressure) {
System.out.println("Watch out for cooler, rainy weather");
}
}
@Override
public void update(Observable o, Object arg) {
if (o instanceof WeatherData) {
WeatherData weatherData = (WeatherData)observable;
lastPressure = currentPressure;
currentPressure = weatherData.getPressure();
display();
}
}
}
[java]
package weatherObservable;
import java.util.Observable;
import java.util.Observer;
/**
* 天气统计布告板
* @author wwj
*
*/
public class StatisticsDisplay implements Observer, DisplayElement {
private float maxTemp = 0.0f;; //最