【发布时间】:2015-04-29 23:29:21
【问题描述】:
我想听听您对应用观察者模式的意见。
我的目标是实现一个可以监听多个 observable 的具体观察者类。
如果我像下面那样开发每个不同的观察者,那么它会像下面这样简单。
public class ConcreteObserver implements EventObserverA , EventObserverB {
updateEventA(EventA event) {}
updateEvetnB(EventB event) {}
}
在这种情况下,我应该使用几乎相同的代码 sn-p 编写许多不同的观察者/可观察类/接口。
为了避免像上面这样的麻烦,我想泛化观察者/但是你们知道多重继承规则不允许像下面这样的代码。
public class ConcreteObserver implements Observer<EventA> , Observer<EventB> {
update(EventA event) {}
update(EventB event) {}
}
因为我有至少两位数的 Observable 事件要在一个具体的观察者中观察,所以我想尽可能避免单独实现每个观察者/可观察对。
我可能猜想这种情况可能有比观察者模式更好的模式,因为观察者模式是为 n:1 observer:observable 而设计的,而我的案例需要 1:n observer:observable 。
你们对这个案例有什么想法/建议吗?
【问题讨论】:
-
update(Observer<EventA> event)是错字,对吧?我猜你的意思是update(EventA event)? -
是的,你是对的,我修复了代码。谢谢
-
如果
EventA和EventB可以扩展一个通用类,您可以将泛型用作public class ConcreteObserver implements Observer<E extends CommonEvent>,那么您不需要为每个观察者创建一个方法,只需update(E event); -
感谢您的建议,这似乎是减少麻烦的好方法。
标签: java generics design-patterns observer-pattern