在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。
一个简单例子:
//被观察者
public class OBservable extends java.util.Observable {
int state = 0;
public int getState() {
return state;
}
public void setState(int state) {
this.setChanged();
this.notifyObservers(state);// 当值改变时通知观察者,调用观察者的update
this.state = state;
}
public static void main(String[] args) {
OBservable horr = new OBservable();
Persons ps = new Persons("工程师A");// 观察者A
Persons ps1 = new Persons("工程师B");// 观察者B
horr.addObserver(ps);// 添加观察
horr.addObserver(ps1);// 添加观察
// 改变被观察者的状态
horr.setState(3);
horr.setState(8);
}
}
//观察员
public class Persons implements java.util.Observer {
String name;
Persons(String name){
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void update(java.util.Observable o, Object arg) {
System.out.println(this.name+" 收到通知 " +
"Horrific.state由"+((OBservable)o).getState()+"变为"+arg);
}
}
运行结果:
工程师B 收到通知 Horrific.state由0变为3
工程师A 收到通知 Horrific.state由0变为3
工程师B 收到通知 Horrific.state由3变为8
工程师A 收到通知 Horrific.state由3变为8