被观察者变化了就把主动把信息告诉监听器,观察者就采取相应措施
import java.util.Observable;
import java.util.Observer;
public class Earth extends Observable {
private String weather = "晴朗";
public String getWeather() {
return weather;
}
//核心在于,被观察物体一改变就notify观察者。
public void setWeather(String weather) {
this.weather = weather;
//将change这个flag=true
setChanged();
//告诉监听器,调用监听器的update方法。parameters是object,任意对象。
notifyObservers(weather);
}
}
import java.util.Observer;
import java.util.Observable;
public class Satellite implements Observer{
private String weather;
@Override
public void update(Observable obj, Object arg){
weather = (String) arg;
System.out.println("近期天气变化:" + weather);
}
}
public class WeatherService {
public static void main(String[] args) {
Earth earth = new Earth();
Satellite satellite = new Satellite();
earth.addObserver(satellite);
System.out.println("天气预报");
earth.setWeather("台风");
earth.setWeather("大到暴雨");
earth.setWeather("天气炎热");
}
}
输出
天气预报
近期天气变化:台风
近期天气变化:大到暴雨
近期天气变化:天气炎热