定义
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有有依赖于它的对象都得到通知并被自动更新。
实例
气象员A(ObserverA)、气象员B(ObserverB)观察天气(被观察者PObserver),天气发生变化,发出通知,并更新天气信息。
代码
客户端
public class Client {
public static void main(String[] args) {
PObserver pObserver = new PObserver();
pObserver.addObserver(new ObserverA());
pObserver.addObserver(new ObserverB());
pObserver.changeData("气温急剧下降");
}
}
PObserver
public class PObserver extends Observable {
private String data;
public void changeData(String data){
this.data = data;
setChanged();
this.notifyObservers();
}
public String getData() {
return this.data;
}
}
ObserverA
public class ObserverA implements Observer{
@Override
public void update(Observable o, Object arg) {
PObserver pObserver = (PObserver) o;
System.out.println("ObserverA has watched data "+ pObserver.getData());
}
}
ObserverB
public class ObserverB implements Observer{
@Override
public void update(Observable o, Object arg) {
PObserver pObserver = (PObserver) o;
System.out.println("ObserverB has watched data "+ pObserver.getData());
}
}