Большой список событий в GWT EventBus - PullRequest
4 голосов
/ 11 мая 2011

В примерах, предоставленных инструментарием Google Web, они добавляют обработчики событий в один класс только для всего приложения.

Как и в случае модулей 1, 2 и 3, все события регистрируются в основном классе AppController. Я нахожу это немного монолитным, и не будет ли лучше, если мы используем шаблон MVP, в котором мы объявляем метод bind () в каждом из предъявителей следующим образом:

public class MyTestPresenter implements Presenter{

     private void bind()
     {
            TestEvent.eventBus.addHandler(TestEvent.Type, new TestEventHandlerImpl() )
     }

}


public class TestEvent
{
 public static SimpleEventBus eventBus = new SimpleEventBus()
}

Запрос:

  1. Если наше приложение огромно - мы будем использовать одну шину событий для заполнения в ней более тысячи событий - или мы будем проектировать таким образом, чтобы у нас были отдельные экземпляры шины событий для каждого модуля ?.

  2. Любая стоимость хранения поля статической шины событий. Любой лучший дизайн, чтобы дать его экземпляру всем классам - передача его всем классам через конструктор с каждым классом презентатора, имеющим ссылку, кажется немного беспорядочной ...

  3. Что такое деятельность и места в GWT, когда дело доходит до обработки событий? - Может ли кто-нибудь дать указание на то, как понимать концепцию деятельности / места в целом?

1 Ответ

1 голос
/ 12 мая 2011

На самом деле мне не нравится реализация шины событий в GWT. Я спрашивал smt о раньше. Сейчас я разрабатываю какое-то настольное приложение и создаю EventBus следующим образом.

public interface EventBus {
    void fireEvent(Event event);

    <T extends Event> void addHandler(Class<T> eventType, Handler<T> handler);

    interface Event {
    }

    interface Handler<E extends Event> {
        void handle(E event);
    }
}

Так что в обычном приложении Java я бы разработал его по-другому, но здесь мы должны иметь дело с проблемами, связанными с javascript и так далее.

Если наше приложение огромно - мы бы использовать один Eventbus, чтобы заполнить больше чем тысяча событий в нем - или мы бы спроектировали таким образом, чтобы мы есть отдельные экземпляры событийной шины для каждого модуля?.

Я тоже думал об этом вопросе. Я обнаружил, что никаких реальных преимуществ нет. Для модульности вы можете отделить видимость ваших событий. И здесь есть какой-то недостаток. Предположим, вы должны иметь дело с несколькими событиями в одном классе - код будет запутанным. Кроме того, вы должны как-то сопоставить эти экземпляры с классами.

Любая стоимость хранения статического события. автобусное поле. Любой лучший дизайн, чтобы дать это экземпляр для всех классов - прохождение это вокруг всех классов через конструктор с каждым классом ведущего Имея это ссылка кажется немного беспорядок ...

Вы можете сделать оба. В новой среде Activity-Place он передается как параметр.

Что такое деятельность и места в GWT когда дело доходит до обработки событий? - Можно кто-то дает указатель на то, как понять концепцию активность / место в целом?

Активность - это как ваш старый докладчик, но без привязки низкого уровня. Поместите точно так же, как запись истории, которая использовалась для указанных окон.

...