我正在嘗試開發一個應用程序,其中如果在PartNumber中有任何更改,人們將會收到通知。它是基於Spring的應用程序。以下是代碼片段。使用Spring依賴注入的觀察者模式實現
我已經在SaveSubscriptionIF
中抽象了存儲機制。存儲和檢索的實際細節在這個接口的實現類中。 Spring的實現類將被注入。
外部應用程序調用我的setState()
方法 - 傳遞新信息。
store.getObservers()
方法返回我Map
其中有觀察員和相應的信息來更新。
到目前爲止這麼好。我碰到了store.getObservers()
的實現部分。此方法實施需要數據 - 即從外部應用程序傳遞的新信息。
如何將'狀態'數據傳遞給'SaveSubscriptionIF'的實現類?
public class PartNumberSubject implements Observable {
private SaveSubscriptionIF store;
private Object state;
@Override
public void addObserver(final ObserverIF o, final Object subscriptionDetails) {
store.addObserver(o, subscriptionDetails);
}
@Override
public void notifyObservers() {
@SuppressWarnings("unchecked")
final Map<ObserverIF, List<PartInformationVO>> observers =(Map<ObserverIF,List<PartInformationVO>>) store .getObservers();
for (final Entry<ObserverIF, List<PartInformationVO>> observer : observers
.entrySet()) {
observer.getKey().update(observer.getValue());
}
}
@Override
public void setState(final Object state) {
this.state = state;
notifyObservers();
}
}
@Karthik:Observer接口不是java.lang的。我在這裏創建了自己的界面。 – HanuAthena 2011-07-11 06:13:16