被观察者:
public classWeatherData extends Observable{
//被观察者的属性
privatefloat temp;
privatefloat presseure;
//修改主题状态,通知观察者
publicvoid setStatus(float temp, float presseure){
this.temp= temp;
this.presseure= presseure;
statusChanged();
}
//1>调用setChanged()方法,标记状态已改变;
//2>调用notifyObserver()方法,完成通知的工作。
publicvoid statusChanged(){
setChanged();
notifyObservers();
}
publicfloat getTemp() {
returntemp;
}
publicfloat getPresseure() {
returnpresseure;
}
}
观察者:
importjava.util.Observable;
importjava.util.Observer;
public classCurrentConditationDisplay implements Observer {
privatefloat temp;
privatefloat pressure;
//主题
privateObservable observable;
//1、初始化被观察者 2、把观察者添加到被观察者上 3、当被观察者改变是,通知观察者
publicCurrentConditationDisplay(Observable observable){
this.observable= observable;
//把观察者添加到主题对象,this就是观察者
observable.addObserver(this);
}
@Override
publicvoid update(Observable o, Object arg) {
if(oinstanceof WeatherData){
WeatherDataweatherData = (WeatherData) o;
this.temp= weatherData.getTemp();
this.pressure= weatherData.getPresseure();
}
display();
}
publicvoid display(){
System.out.println("temp-->"+temp+"pressure-->"+pressure);
}
}
测试类:
public class Test {
publicstatic void main(String args[]){
WeatherDataweatherData = new WeatherData();
CurrentConditationDisplaycc = new CurrentConditationDisplay(weatherData);
weatherData.setStatus(11,11);
}
}
总结:
1、被观察者继承Observable,设置改变状态,通知观察者
2、观察者实现Observer,初始化被观察者,再把观察者添加到被观察者中。
3、当被观察者发生改变时,观察者就可以实时接收到被观察者改变的信息。