Подтвердить что ты не робот

Путаница вокруг всего GWT MVP против деятельности и мест

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

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

"MVP-архитектура. MVP - это концепция, и одним из способов ее выполнения является структура" места-действия "

Я также слышу: "Ведущий аналогичен активности"

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

Мы можем смешивать в "Activity and Places with MVP"

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

Затем я пытаюсь найти такие вещи → http://code.google.com/p/gwt-platform/

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

4b9b3361

Ответ 1

TL; DR: Места и действия никоим образом не связаны с MVP.

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

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

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

Все о навигации.

Там нет отношений с MVP (несмотря на то, что говорят официальные документы). Если вы используете MVP, вы, скорее всего, сделаете для вас "ведущими" действия, контролируя "представление" (тот, который будет передан обратно в AcceptsOneWidget, полученный в аргументе, в его метод start). Это правило не правило, и, например, Google экспериментирует в примере mobilewebapp с развязными действиями и презентаторами.

Ответ 2

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

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

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

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

В документации Google говорится:

Структура "Действия и места" позволяет создавать URL-адреса, доступные для закладок, в вашем приложении.

Итак, "Действия и места" - это нечто большее, чем просто среда MVP. Тем не менее Activity является Presenter.

public interface Activity {

  String mayStop();

  void onCancel();

  void onStop();

  void start(AcceptsOneWidget panel, EventBus eventBus);
}

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

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

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

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

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

enter image description here

Ответ 3

Мероприятия - это Ведущие. Места - это всего лишь обертка для токена истории.

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

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

Ответ 4

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

Вот хорошая статья, чтобы помочь устранить любую путаницу, MVP, Activities and Places Confusion

Ответ 5

Существуют два независимых измерения Дизайн-шаблон  - Нет рисунка  - MVP

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

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

  • Нет MVP, нет действий и мест.
  • Только MVP
  • Только действия и места
  • MVP с действиями и местами