我正在尝试开发一个应用程序,其中如果在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