日期:2014-05-20  浏览次数:20565 次

java观察者模式的疑问
被观察者发生变化的时候通知观察者,观察者执行相关方法。跟被观察者发生变化后自己调用方法用什么不同。优点在哪里。如注释掉的两行和下面的两行有啥不同。
例:
import java.util.Observable;
import java.util.Observer;

public class Test {
public static void main(String[] args) {
NumObservable number = new NumObservable();
number.addObserver(new NumObserver());
number.setData(1);
number.setData(2);
number.setData(3);
}
}

class NumObservable extends Observable {
private int data = 0;

public int getData() {
return data;
}

public void setData(int i) {
data = i;
// setChanged();
// notifyObservers();
NumObserver no = new NumObserver();
no.update(this, 1);
}
}

class NumObserver implements Observer {
public void update(Observable o, Object arg) {
NumObservable myObserable = (NumObservable) o;
System.out.println("Data has changed to " + myObserable.getData());
}
}

------解决方案--------------------
在里面new岂不是白费了设计模式,设计模式解决问题的本质就是解耦,new在里面就是写死了

如果此时增加了另一种观察者,按你写的就没办法去通知被观察者