Каковы различия между MVC, MVP и MVVM?

Из того, что я могу собрать, первые два не кажутся такими разными. Независимо от того, называется ли он контроллером или ведущим, он все равно имеет те же функции посредничества.

MVVM кажется немного отличающимся от того, что контроллер, похоже, больше входит в структуру, например, с привязками XAML.

Что такое пояснения "Клифф-Ноты" различий?

Ответы

Ответ 1

Разница заключается в том, как данные из уровня модели заканчиваются в экземплярах представления.

  • в классическом MVC (а также в Model2 MVC) представление является активной структурой. Он запрашивает информацию из уровня модели. Контроллер только изменяет состояние слоя модели и просматривает.
  • в MVP представление является пассивным. Вместо этого запрашивающий запрос запрашивает информацию из слоя модели и передает ему представление. Вы можете более подробно ознакомиться с шаблоном MVP здесь.
  • в MVVM похож на MVP, но viewmodel должен манипулировать информацией, прежде чем передавать его для просмотра.

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

Но вам придется использовать MVVM, если у вас есть уже существующий (или по какой-то причине - un changeable) пользовательский интерфейс и существующий (или неизменный) уровень модели. И вы должны заставить их работать вместе. То, что вступает в игру viewmodel.