Отличие MVVM от MVP?

Првиет ребята :-) У меня может быть банальный вопрос но очень важный для меня :-)
В чем отличие "MVVM" от "MVP" ?

Как понимаю я (MVVM):
- Model [данные]
- View [обрабатывает визуальную часть]
- ViewModel [обрабатывает логику для view используя model (может иметь доп класc для обработки data binding)]

Как понимаю я (MVP):
- Model [data binding]
- View [обрабатывает визуальную часть]
- Presenter [обрабатывает логику для view используя model]
  • Вопрос задан
  • 19676 просмотров
Решения вопроса 1
Комментировать
Пригласить эксперта
Ответы на вопрос 2
mmarashan
@mmarashan
Fullstack/Android/IoT developer
Как я это структурировал для себя.
MVC: доступ к данным (Model) есть у View и у контроллера. То есть View может перерисовываться самостоятельно лишь на основании изменения данных в Model или взаимодействия пользователя с View (нажатие на экран), или сама изменить данные в Model; и только сообщить контроллеру об этом. Controller может изменять состояние View на основании своих источников данных (напр. внешние запросы, нажатие на кнопку) и тоже может менять Model.
MVP: Presenter является посредником между View и моделью. View и модель меняются данными через установленное API. Отображение во View зависит только от данных, которые установил Presenter.
MVVM: ViewModel также является посредником между View и моделью. Но ViewModel не может напрямую воздействовать на View, а лишь является источником данных и имеет возможность через функции вызова передавать актуальные данные. То, что отображать, определяется на уровне View.
Ответ написан
Комментировать
@MrBinWin
Ключевое различие в том, что в MVVM ViewModel содержит state (состояние), а Presenter в MVP - нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы