我有一个类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);

10-01 23:51