Управление большим количеством слушателей, многие из которых будут добавлены автоматически - PullRequest
0 голосов
/ 31 октября 2018

У меня есть текстовая фабрика, которая отвечает за создание всех моих текстов 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));
        }
        ...
    }
}

Не думаю, что это будет иметь неприятные последствия, но мне тоже не очень нравится

Это звучит разумно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...