GWT Event Bus, для которого преимущества - PullRequest
0 голосов
/ 19 сентября 2018

Мне трудно понять преимущества использования концепции шины событий в GWT.Я прошел много примеров, показывающих, как его использовать.Я понимаю, как это сделано, но я не понимаю, почему это помогает.

Я беру пример:

Button button = new Button("click");
 button.addListener(new ButtonListenerAdapter(){
    @Override
    public void onClick(Button button, EventObject e) {
        doSomething() ;// must replace it with fireEvent  later :(
    }

});

Чтобы добавить возможность шины событий в приведенный выше код, мы должны ввести больше кода:

1) создать класс событийкоторый расширяет Event (реализует 2 метода)

2) создает интерфейс для обработчика событий, где dosomething () будет абстрактным

3) реализует интерфейс

4) Класс всобытие, которое происходит, должно реализовать интерфейс HasHandler, ввести экземпляр HandlerManager, реализовать fireEvent, зарегистрировать событие и запустить событие.

Теперь моя проблема в том, что, если у меня есть 50 событий пользовательского интерфейса, я не вижу выгоды от дублирования вышеупомянутых 4 шагов, где это должно быть.Если я не сделаю этого, с какой действительно проблемой я столкнусь.

Редактировать:

Это тот факт, что обработчики событий и событий разделены на классыделает шаблон EventBus интересным?

AddContactEvent.java
AddContactEventHandler.java
RemoveContactEvent.java
RemoveContactEventHandler.java

1 Ответ

0 голосов
/ 19 сентября 2018

Автобус без событий

Пример: Вы можете купить яблоки прямо с фермы.

Button поддерживает коллекцию слушателей.Button знает обо всех слушателях и должен уведомить их в цикле.Button напрямую связан с обработчиками.

Шина событий

Пример: Вы покупаете яблоки в магазине, а магазин покупает яблоки уфермы.Магазин является посредником между вами и фермой.Вы не знаете о ферме.Ферма не знает о вас.

Шина событий является посредником между производителем события и потребителем события.Производитель событий знает о шине событий, но не все потребители событий.

Button не знает о слушателях.Он знает только о EventBus.Обработчики не знают о Button.Они знают о шине.

Резюме:

Приложения без плагинов могут быть реализованы без шины событий.

Должны быть реализованы приложения с поддержкой плагиновс шиной событий, поскольку заранее неизвестно, сколько плагинов подключено к источнику событий.

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