Какую роль должен играть контроллер в приложениях gwt, реализующих шаблон MVP? - PullRequest
2 голосов
/ 06 сентября 2010

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

Что такое MVP и MVC и в чем разница? Какая ваша рекомендация для разработки приложений GWT?MVC, MVP или специальное решение для обмена сообщениями?

Я думаю, что в учебнике GWT (http://code.google.com/webtoolkit/articles/mvp-architecture.html) для MVP также имеется контроллер (AppController), и некоторые ответы управляются на уровне Contoller, а нена докладчике. Поэтому мой вопрос заключается в том, какую роль должен играть контроллер в реализации шаблона MVP?

Откуда мы должны инициировать вызов асинхронного сервера, докладчика или контроллера, например, если мне нужно сохранить запись, следует ли мне позвонитьсерверная функция (которая вызывает DAO и сохраняет запись) из Presenter или докладчик должен отправить событие, используя шину событий, и контроллер воздействует на событие и вызывает функцию сервера для сохранения.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2010

Страница учебника GWT, на которую вы ссылаются , говорит о контроллере приложений:

Для обработки логики, которая не является специфической любому докладчику и вместо этого проживает на уровне приложений, мы будем представить компонент AppController.

Так что это склейка между несколькими предъявителями, представлениями и моделью (возможно, несколькими моделями). Он также обрабатывает историю браузера. И, возможно, дополнительные вещи, которые не относятся только к одному докладчику.

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

0 голосов
/ 06 сентября 2010

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

...