一。jdk自带的观察者模式例子:
1.被观察者
public class Watched extends Observable{
private String str;
private int i = 0;
public void change(String s){
str = s;
super.setChanged();
super.notifyObservers(i++);
}
public String getInfo(){
return str;
}
}
2.观察者
public class Watcher implements Observer{
public void update(Observable obs,Object o){
Watched w = (Watched)obs;
int i = (Integer)o;
String ss = "变";
String str = "";
for (int a = 0 ; a < i ; a++){
str = str + ss;
}
System.out.println(w.getInfo()+str);
}
}
3.测试程序
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Observer observer = new Watcher(); // 建立一个观察者
Watched observable = new Watched(); // 建立一个被观察者
observable.addObserver(observer); // 给被观察者添加一个观察者
for (int i = 0 ; i < 10 ; i++){
observable.change("我");
}
}
}
二、监听器相关,参照http://blog.csdn.net/gqltt/article/details/7563620
个人理解:事件源(EventSource)是被观察者,事件监听器(DemoEventListener)是观察者,他们之间使用DemoEvent传递消息。