我想知道关于观察者设计模式的实现。通常,我们在Observable中维护一个观察者列表,并从其通知中调用观察者的update方法。
在这种情况下,现在的设计是什么?我应该在观察者中保持可观察的清单吗?但是然后在更新方法中,我如何知道哪个可观察对象调用了此观察者的更新。
请分享您的想法。
谢谢
答案 0 :(得分:0)
通常,可观察者持有对观察者的引用。在您的情况下,这可能是一个列表。无论如何,要更新的第一个参数是可观察的。
所以这是一种方式:
import java.util.Observable;
import java.util.Observer;
enum Observables {
o1,o2
}
class MyObservable extends Observable {
public MyObservable(Observables observables) {
this.observables=observables;
}
public void setChangedAndNotify(Object object) {
setChanged();
notifyObservers(object);
}
final Observables observables;
}
class MyObserver implements Observer {
@Override public void update(Observable o,Object arg) {
switch(((MyObservable)o).observables) {
case o1:
System.out.println(((MyObservable)o).observables);
break;
case o2:
System.out.println(((MyObservable)o).observables);
break;
}
}
}
class so56200126_single_observer_with_multiple_observable {
public static void main(String[] args) throws InterruptedException {
MyObservable myObservable1=new MyObservable(Observables.o1);
MyObservable myObservable2=new MyObservable(Observables.o2);
MyObserver myObserver=new MyObserver();
myObservable1.addObserver(myObserver);
myObservable2.addObserver(myObserver);
myObservable1.setChangedAndNotify(null);
myObservable2.setChangedAndNotify(null);
Thread.sleep(1);
}
}