Мы разрабатываем приложение с использованием шаблона MVP, как описано в этом руководстве:
http://code.google.com/webtoolkit/articles/mvp-architecture.html
При создании экземпляра контроллера мы делаем следующее:
appController = new AppController(service, eventBus);
appController.go(RootPanel.get("SOME_SLOT"));
Теперь, когда контроллер создает определенного докладчика, он делает что-то вроде этого:
sthPresenter = new SthPresenter(service, eventBus, new SthView());
sthPresenter.go();
Презентатор затем сохраняет eventBus и службу в частную переменную поля и использует их по мере необходимости.
По мере роста приложения у нас появляется все больше докладчиков и представлений, поэтому вопрос заключается в том, можем ли мы использовать другой метод получения службы и eventBus в презентаторах, не передавая ссылку через конструктор каждого докладчика.
Например, создание статического поля в контроллере и просто вызов его с помощью чего-то вроде AppController.getService (). Может быть шаблон синглтона.
Будет ли статическое поле в контроллере (или где-то еще) плохой идеей для этого проекта. Имейте в виду, что код скомпилирован в javascript, если это имеет какое-либо значение.