У меня есть текстовая фабрика, которая отвечает за создание всех моих текстов SWT. Мне нужно сделать несколько слушателей, которые определяют правильное поведение этих текстов, но я не знаю поведение, пока не свяжу его с бизнес-объектом. В процессе привязки данных я хочу добавить возможность подавать моим слушателям бизнес-объект, который сообщает им все, что им нужно знать, и как с этим справляться.
Проблема в том, что я не знаю, как лучше всего (наиболее чисто) сделать это.
Все, что я могу думать, это:
class RandomUiView {
Databinding databinding = new Databinding(); // one instance per view
public void refreshUi(whatever) {
databinding.createDatabinding(text, bObject);
... // Many other text fields
}
}
class DataBinding {
private HashMap<Text, List<MyAbstractListener>> map;
public void createDatabinding(text, bObject) {
...
if (!map.contains(text)) {
list.add(new myConcreteListenerA(bObject));
list.add(new myConcreteListenerB(bObject))
...
map.put(text, list);
} else {
list = map.get(text);
list.foreach(listener -> listener.setObject(bObject));
}
...
}
}
Не думаю, что это будет иметь неприятные последствия, но мне тоже не очень нравится
Это звучит разумно?