假設我有一個班級播音員來播放某些事件。 如:帶過濾器的觀察者模式,在什麼級別進行過濾?
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);
}
現在:新的需求出現,他說,當事件的類型是「富」,我們應該保存它到數據庫但不廣播它。
我應該過濾哪一層?在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);
}
}
你能詳細說明一下嗎? – JavaDeveloper