Модели в модельном представлении Presenter MVP - PullRequest
3 голосов
/ 09 января 2010

Правильно ли я считаю, что «Модель», представленная буквой M в MVP, может быть моделью предметной области или моделью представления / представления?

1 Ответ

7 голосов
/ 09 января 2010

Да, Модель может быть практически любой Моделью.С моей точки зрения, первоначальное намерение MVC заключалось в том, что это Доменный объект, и это, безусловно, все еще возможно.

Однако мой опыт показал, что лучшее соответствие достигается, если мы представим специализированную ViewModel./ Презентационная модель как изоляция между моделью предметной области и представлением.

Даже когда ViewModel кажется семантически идентичным объекту предметной области, такая изоляция позволяет нам независимо изменять их и, следовательно, следовать Принцип единой ответственности .

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

  • Логика, которая определяет, следует ли включить или отключить конкретный элемент управления.Доменные модели не должны знать ничего об элементах управления.
  • Логика, отображающая состояние в цвет.Цвета зависят от технологии - это разные типы CLR в Windows Forms, WPF и ASP.NET.
  • Проверка.Формы ввода обычно позволяют вводить недопустимые данные без исключения.Вместо этого они предоставляют обратную связь пользователю, что данные являются недействительными.Доменные объекты, с другой стороны, должны защищать свои инварианты и, таким образом, генерировать неверный ввод.

Более подробную информацию можно найти здесь

...