MVVM: Форматирует ли ViewModel данные, которые он получает от модели? - PullRequest
1 голос
/ 06 октября 2010

Я немного запутался в MVVM.

Я понимаю концепцию и вижу преимущества. Моя проблема: ViewModel передает данные непосредственно из модели.

Например, допустим, у меня есть модель "Пользователь" с методом findByName (). ViewModel будет вызывать это, чтобы передать соответствующие данные пользователя для просмотра.

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

Мой вопрос заключается в том, должна ли ViewModel возвращать набор пользовательских объектов в представление или возвращать реструктурированную версию этого, которая содержит только то, что нужно представлению?

Насколько я понимаю, объект "Пользователь" в данном случае является частью уровня модели, и в MVVM представление должно зависеть только от модели представления.

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

Передача набора пользовательских объектов непосредственно в представление (через ViewModel) будет намного проще.

Ответы [ 2 ]

1 голос
/ 06 октября 2010

Есть немного избыточности, конечно. Однако, если вы реализуете MVVM, представляя объекты, вы получите

  • форматирование информации о модели для вида без загрязнения модели логикой представления
  • уведомляет представление о любых изменениях
  • использовать проверку WPF (если вы используете WPF)
  • запускать приемочные тесты с уровня виртуальной машины, а не с графическим интерфейсом, если вы хотите
  • абстрагируйте вашу презентацию от любых изменений в модели.

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

Поместив виртуальную машину между вашей моделью и представлением, вы буферизируете себя от подобных изменений.

Если вы хотите что-то сделать с пользователями, как они есть, я скажу - сделайте это - это поможет вам быстро получить отзыв о вашем графическом интерфейсе. Однако в первый раз эти объекты User не выполняют точно то, что нужно View, или вам необходимо уведомить View об изменении, или вы обнаружите, что загрязняете модель, или что-то в разрывах привязки, может быть, это хорошее время перейти на MVVM.

0 голосов
/ 10 октября 2010

Разве это не просто переместить разрыв в ViewModels, которые используют модель?Вам все равно нужно пройти и обновить все это.

Если бы я переименовал что-то (например, изменил "фамилию" на "фамилию"), я бы ожидал, что что-то сломается.Я не вижу, как добавление привязки в слой VM исправляет это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...