现实开发中需要使用观察者模式,我们往往会自己实现一套,但是在JDK1.2之后,Java已经提供了一套标准的API以供使用,虽不强大,但是也适合大多数情景,可以节省不少的工作量。
主要使用的到的API是java.util.Observable类与java.util.Observer接口。
public class Observable {
private boolean changed = false;
private Vector obs;
...
public void notifyObservers(Object arg) {
Object[] arrLocal;
synchronized (this) {
if (!changed)
return;
arrLocal = obs.toArray();
clearChanged();
}
for (int i = arrLocal.length-1; i>=0; i--)
((Observer)arrLocal[i]).update(this, arg);
}
}
public interface Observer {
void update(Observable o, Object arg);
}