我希望听听你对应用观察者模式的意见。
我的目标是实现一个具体的观察者类,可以监听多个可观察对象。
如果我像下面这样开发每个不同的观察者,那么就会很简单:
public class ConcreteObserver implements EventObserverA , EventObserverB {
updateEventA(EventA event) {}
updateEvetnB(EventB event) {}
}
在这种情况下,我应该编写许多不同的观察者/可观察类/接口,其中几乎包含相同的代码片段。
为了避免上述烦恼,我想要通用化观察者/但是你们知道多重继承规则不允许如下的代码。
public class ConcreteObserver implements Observer<EventA> , Observer<EventB> {
update(EventA event) {}
update(EventB event) {}
由于我至少有两位具体观察者需要观察的可观察事件,如果可能的话,我希望避免分别实现每个观察者/可观察者对。
我猜这种情况下可能会有比观察者模式更好的设计模式,因为观察者模式是为 n:1 观察者:可观察对象而设计的,而我的情况需要 1:n 观察者:可观察对象。
您们有关于这种情况的任何想法/建议吗?
update(Observer<EventA> event)
是打错字了,对吧?我猜你是想说update(EventA event)
吧? - ruakhEventA
和EventB
可以扩展一个共同的类,那么你可以使用泛型作为public class ConcreteObserver implements Observer<E extends CommonEvent>
,然后你就不需要为每个观察者创建一个方法,只需要update(E event);
即可。 - Jorge Campos