【发布时间】:2017-01-05 19:19:09
【问题描述】:
假设我有一个班级广播员来广播某些事件。 例如:
List<Observers> observers = …
Public void broadcast(Event e) {
for (each observer: observers) {
observer.observe(e);
}
}
然后我有一个名为 EventReceiver 的类,它执行以下操作
public void processEvent(Event e) {
saveToDatabase(e);
broadcast(e);
}
现在:一个新的需求来了,当Event是“foo”类型时,我们应该把它保存到数据库而不是广播它。
我应该在哪一层过滤?在 broadcast.java 或 EventReceiver.java 中?
例如:
Public void broadcast(Event e) {
If (event != foo) {
for (each observer: observers) {
observer.observe(e);
}
}
}
或者
public void processEvent(Event e) {
saveToDatabase(e);
If (event != foo) {
broadcast(e);
}
}
【问题讨论】:
标签: java design-patterns observer-pattern