1.简介(概念上一节已经讲过)
java.util.Observable 可观察者(被观察对象实现此类即可)
java.util.Observer 观察者(观察者实现此接口即可)
2.小栗子
2.1 被观察者JavaPlatform.java
public class JavaPlatform extends Observable {
public void mineNotifyObservers() {
setChanged();
super.notifyObservers();
}
}
2.2 观察者
public class JavaWeixin implements Observer {
private String name;
public JavaWeixin(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
System.out.println("name:" + this.name);
}
}
3.测试
public class JavaObserverPatternDemo {
public static void main(String[] args) {
JavaPlatform javaPlatform = new JavaPlatform();
JavaWeixin a = new JavaWeixin("a");
JavaWeixin b = new JavaWeixin("b");
javaPlatform.addObserver(a);
javaPlatform.addObserver(b);
javaPlatform.mineNotifyObservers();
javaPlatform.deleteObserver(a);
javaPlatform.mineNotifyObservers();
}
}
result:
name:b
name:a
name:b
4.总结
Java内置观察者模式,因为可观察者是对象,所以可扩展性不强。它内部实现代码很简单,可看源码。