我有一个类MyObserver,它侦听通告程序中的更改。通知程序扩展了Observable并使用notifyObservers(Object)通知其事件。作为参数传递的对象始终是同一类的实例。问题是每个观察者都需要听不同的事件。例如,一个观察者需要聆听状态改变的事件,而其他人则聆听所有类型的事件。我该如何使用观察者模式呢?
谢谢。
最佳答案
如果可以稍微更改一下设计:
interface MyObserver {
public void stateChangeEvent();
public void otherEvent();
}
class MyObserverAdapter implements MyObserver {
public void stateChangeEvent() {
// some default implementation or no implementation.
}
public void otherEvent() {
// some default implementation or no implementation.
}
}
class MyStateChangeObserver extends MyObserverAdapter {
public void stateChangeEvent() {
// implement behavior specific to this class.
}
}
class MyOtherObserver extends MyObserverAdapter {
public void otherEvent() {
// implement behavior specific to this class.
}
}
用法:
MyObserver stateObserver = new MyStateChangeObserver();
MyObserver otherObserver = new MyOtherObserver();
notifier.notifyObservers(stateObserver);
notifier.notifyObservers(otherObserver);