Помогите понять шаблон MVVM? - PullRequest
4 голосов
/ 26 августа 2011

Я пытаюсь освоиться с использованием WPF и платформы Prism, которая тесно связана с шаблоном MVVM.Я подготовил много разных описаний, примеров и обсуждений по MVVM, и каждое из них немного отличается и оставило меня в замешательстве.

Я понимаю следующее:

Шаблон MVVM состоит из 3 частей: -

  • Модель - классы, которые содержат данные / информацию о приложении.
  • Представление - Визуальные элементы приложения.
  • ViewModel - логика, состояние и другое поведение, связанное с визуальными элементами.Он берет данные из модели и предоставляет их (возможно, с некоторым преобразованием / форматированием данных) таким образом, что View может использовать их напрямую.

В чем я не уверен, так это в том, что:

  1. Эти три части охватывают каждую часть приложения?Или могут быть части приложения, которые находятся за пределами этих трех частей?
  2. Является ли ViewModel или какая-либо другая часть ответственной за заполнение модели?

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 26 августа 2011
  1. Абсолютно нет.Если они не делают.Если ваше приложение простое, то все может быть обработано в View, ViewModel или Model (s).Если ваше приложение сложное и лучшие практики требуют, чтобы вы разбили логику на их собственные типы (коммуникационная логика, логика хранилища и т. Д.), То вас ничто не остановит.MVVM касается только логики, ориентированной на представление в View, логику приложения в ViewModel и средства хранения информации для передачи между ними.

  2. ViewModel предназначена исключительно для интерпретациидействия пользователя и чтение результатов логики в моделях, чтобы представление могло отображать эту информацию пользователю.В некоторых случаях имеет смысл, чтобы сама Модель содержала некоторую логику, чтобы она могла реагировать на действия пользователя.Тем не менее, по моему опыту, этот дизайн мини-модели ViewModel является реакцией на дизайнерские решения неопытных разработчиков.После того, как вы освоили MVVM, вам обычно не нужно (или не нужно) помещать какой-либо код в свои модели помимо логики проверки.

0 голосов
/ 26 августа 2011
  1. Думайте о Model, ViewModel и View как о логических слоях, которые соответственно обрабатывают бизнес, поток приложений и представление. Например, ViewModel class может делегировать сложные или повторно используемые взаимодействия пользовательского интерфейса отдельной службе, которая не соответствует какому-либо конкретному представлению, но все еще принадлежит ViewModel layer .

  2. Да, ViewModel стоит между пользовательским интерфейсом и моделью.

...