GWT Model View Presenter, повторно использовать докладчиков? Или ведущий - ведущий связи

Новичок здесь.

Я только начал с выступления Рэя Райана в Google IO и следил за некоторыми статьями на сайте разработчиков Google. Я не использовал никаких дополнений GWT, таких как GWTP или MVP4G или GIN, или каких-либо других вещей. Просто последовал примеру контактов на сайте GWT и попытался смоделировать мой случай.

У меня есть панель DockLayout, у которой есть заголовок, дерево навигации слева и центральная главная панель. Все это у меня есть в одном DefaultView, который реализует DefaultPresenter.

Теперь у меня есть DialogBox, который появляется, когда пользователь что-то делает в дереве, и это моделируется в DialogView и DialogPresenter соответственно.

Теперь, когда я скрываю DialogBox, я заканчиваю тем, что вызываю новый экземпляр DefaultPresenter из AppController, который в силу этого создает новый DefaultView, и все мои выборки дерева и другие изменения в главной центральной панели исчезают.

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

Или я неправильно понял всю архитектуру MVP? Теперь я планирую иметь разных презентаторов и представлений для каждого из моих компонентов, например HeaderPresenter / HeaderView, TreePresenter / TreeView, MainContentPresenter / MainContentView? Так что я буду создавать только новые экземпляры презентаторов, которые мне нужны (например, MainContentPresenter), и сохранять существующие как есть (как TreePresenter и HeaderPresenter) Решает ли это мою проблему? Как бы я сшил все эти разные виды в окне браузера? Я не использую UiBInder, просто придерживаюсь основ.

Помогите мне все вы, эксперты, я в тупике!

1 ответ

Когда я прочитал ваш вопрос, мне показалось, что ответом должна стать статья, похожая на Stateful Presenter Architecture для GWT-приложений. Это Stackru, однако, все о краткости, поэтому давайте посмотрим:

ответы

1. Можно ли повторно использовать экземпляры докладчиков, не создавая новый при изменении истории?

Определенно. Ничто не мешает вам переключаться между кучей одиночных докладчиков, добавленных в ваши представления (переключение произойдет в вашей реализации ActivityMapper). Обратите внимание на предположение отныне, что ваши докладчики - это Действия.

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

Поскольку ваши докладчики теперь являются одиночками, они сохранят состояние своих переменных-членов. Для обмена сообщениями между докладчиками, события и EventBus ваши друзья.

3. Как загрузить существующий экземпляр презентатора в контроллере приложения при пожаре?

Ваш ActivityMapper экземпляр, после регистрации в вашем ActivityManager, должен быть достаточным. ActivityManager будет опираться на вашу реализацию public Activity getActivity(Place place) из ActivityMapper интерфейс для возврата одного из ваших синглтон-презентаторов.

Ресурсы

Сеанс Дэвида Чандлера (GWT) в Google I/O 2011 затрагивает именно этот тип архитектуры master/details. Я настоятельно рекомендую его в целом, и в отношении этого вопроса, в частности, ту часть, которая следует после 18-й минуты, когда Дэвид начинает подробный обзор мероприятий и мест.

Другие вопросы по тегам