源自:
http://www.blogjava.net/flustar/archive/2007/11/28/observer.html
Observer观察者模式:
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。
例子:
public interface Observer {
public void update(Children child);
}
public class Children {
static private Vector<observer></observer> obs;
static private String state = null;
static {
obs = new Vector<observer></observer>();
}
public static void attach(Observer o) {
obs.addElement(o);
}
public static void detach(Observer o) {
obs.removeElement(o);
}
public void setState(String str) {
state = str;
}
public String getState() {
return state;
}
public void notifyObs() {
for (Observer o : obs) {
o.update(this);
}
}
}
public class Parent implements Observer {
public void update(Children child) {
if (child.getState().equals("fight")) {
System.out.println("告诉Parent,他和别人打架了");
} else if (child.getState().equals("scholarship")) {
System.out.println("告诉Parent,他得到了奖学金");
}
}
}
public class Mother implements Observer {
public void update(Children child) {
if (child.getState().equals("fight")) {
System.out.println("告诉Mother,他和别人打架了");
} else if (child.getState().equals("scholarship")) {
System.out.println("告诉Mother,他得到了奖学金");
}
}
}
public class Client {
public static void main(String[] args) {
Children child = new Children();
Observer parent = new Parent();
Observer mother = new Mother();
Children.attach(parent);
Children.attach(mother);
child.setState("fight");
child.notifyObs();
child.setState("scholarship");
child.notifyObs();
}
}