Я пытаюсь разработать приложение, в котором люди получат уведомление, если есть какие-либо изменения в PartNumber. Это приложение на основе Spring. Ниже приведен фрагмент кода.Реализация шаблона наблюдателя с использованием впрыска весенней зависимости
Я отделил механизм хранения здесь в SaveSubscriptionIF
. Фактические данные о хранении и извлечении находятся в классе реализации этого интерфейса. Класс реализации будет введен в Spring.
Внешнее приложение вызывает мой метод setState()
- передавая новую информацию.
Метод store.getObservers()
возвращает мне Map
, у которых есть наблюдатели и соответствующая информация для обновления.
Пока все хорошо. Я поражен частью реализации store.getObservers()
. Для реализации этого метода необходимы данные state
- то есть новая информация, переданная из внешнего приложения.
Как передать данные состояния в класс реализации «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