Путаница вокруг всего GWT MVP против деятельности и мест - PullRequest
21 голосов
/ 14 июня 2011

Прочитав некоторое время и посмотрев видео Google IO, я все еще не понимаю, как MVP относится к Activity и Places.

Я нашел тему, опубликованную некоторое время назад -> GWT 2,2 MVP против GWT 2.1 Места деятельности

«Архитектура MVP. Концепция MVP, и один из способов сделать это - структура мест-действий»

Я также слышу, что «ведущий - это аналог действия»

Можем дать «Активность и Места без MVP»

Мы можем смешивать в «Активность и Места с MVP»

«MVP - это не что иное, как то, как мы организуем наш проект, чтобы мы могли легко тестировать и организовывать код»

Тогда я пытаюсь выяснить, что-то вроде этого -> http://code.google.com/p/gwt-platform/

Я действительно смущен. Я хотел бы, чтобы одна остановка потока положила конец всей путанице.

Ответы [ 5 ]

21 голосов
/ 14 июня 2011

TL; DR: Места и занятия никак не связаны с MVP.

Места - это навигация в ваше приложение: вы переходите из одного места в другое.И деятельность построена поверх Мест, чтобы помочь связать «то, что вы видите» с «где вы находитесь»:

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

Каждая из этих «частей» (региона) управляется ActivityManager s, которые прослушивают PlaceChangeEvent s и спрашивают их ActivityMapper, которые Activity показывают в этом регионе.

Этовсе о навигации.

Нет никаких отношений с MVP (несмотря на то, что говорят официальные документы).Однако, если вы используете MVP, вы, вероятно, сделаете свои действия «ведущими», контролируя «представление» (то, которое действие передаст обратно AcceptsOneWidget, полученному в качестве аргумента его методу start).Хотя это не правило, и, например, Google экспериментирует с в образце мобильного веб-приложения с развязкой действий и докладчиков.

9 голосов
/ 08 марта 2013

MVP означает Модель , Вид , Presenter , это шаблон кодирования.Это просто эволюция из шаблона MVC ( Модель , Вид , Контроллер ).См. страница википедии MVC .

Разница между MVP и MVC заключается в том, что в MVP модель и представление не знают друг друга.В MVP ваш взгляд должен быть настолько тупым, насколько это возможно.Все взаимодействия обрабатываются докладчиком.Это просто способ правильно организовать ваш код.

Некоторые люди создали фреймворки, чтобы уменьшить объем работы по организации вашего кода таким способом.Посмотрите на различные MVPimplementations.Их легко найти в Интернете.

MVP упрощает тестирование вашего кода, поскольку вы можете легко заменить свое представление другой реализацией (обычно Mock), которая будет имитировать поведение или ваше представление.Таким образом, вам не нужно запускать ваши тесты в среде браузера (представления GWT - это представления HTML).Таким образом, ваши тесты будут выполняться быстрее.

Документация Google гласит:

Платформа "Действия и места" позволяет создавать закладки URL в вашем приложении.

Таким образом, «Деятельности и места» - это гораздо больше, чем просто инфраструктура MVP.Тем не менее Activity является Presenter .

public interface Activity {

  String mayStop();

  void onCancel();

  void onStop();

  void start(AcceptsOneWidget panel, EventBus eventBus);
}

Вы можете использовать интерфейс Activity для своих докладчиков, не используя Places и другие объекты из Google.Но в этом случае вам, вероятно, следует написать своего рода Менеджер активности, который будет отвечать за запуск и остановку ваших действий.При запуске и остановке вы, вероятно, захотите создать свое представление, добавить его в dom, зарегистрировать обработчики событий и т. Д. И вы захотите уничтожить все это, когда остановитесь.

В некоторых других реализациях MVP вы можете найтиметоды bind () и unbind (), имеющие одинаковую роль.

Мощность реализации Activity Place от Google исходит от всех объектов, стоящих за объектом Place , который будет запускать или останавливать вашу деятельность и обрабатывать историю.

Place , как и другие люди, упомянутые выше, является просто отображением вашего URL.

В реализации Activity Place от google задействовано много объектов.Вот схема, чтобы помочь вам понять.Вы увидите, что это лишь малая часть всего этого. Более подробную информацию о моем блоге вы можете найти в этой статье

enter image description here

7 голосов
/ 14 июня 2011

Мероприятия ведутся. Места - это просто оболочка для токена истории.

Путаница началась с видео Google IO, где была представлена ​​концепция MVP GWT, но реализации не было. Таким образом, люди начали катиться самостоятельно. Затем Google написал документы 2.1, где они подробно описали концепцию и предоставили только пример кода для загрузки. Позже в 2.2 они представили свою полную реализацию, Activity и др.

Итак, если вы хотите пойти по маршруту MVP, вам нужно выбрать свою реализацию. Активиты были бы, вероятно, лучшими, поскольку они официальные.

2 голосов
/ 15 августа 2012

Пока вы думаете о них как о двух схемах развития, их довольно легко разделить.MVP - это шаблон для разделения интересов, а «Деяния» и «Места» - это инструмент для управления URL и историей.

Вот хорошая статья, которая поможет устранить любую путаницу, MVP, Путаница с действиями и местами

0 голосов
/ 11 марта 2015

Существует два независимых измерения. Шаблон проектирования - без шаблона - MVP

Навигация и обход экрана - без навигации - Действия и места

Возможно, у вас есть приложение, которое может следовать одному из следующих

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