Могу ли я просто улучшить модель вместо построения ViewModel? - PullRequest
0 голосов
/ 09 мая 2011

Я знаю, что mvvm требует наличия класса ViewModel, который оборачивает класс Model, но мне интересно, почему лучше сделать это, а не просто расширять класс Model напрямую через частичные классы. Я понимаю, что вы можете захотеть, чтобы Модель генерировалась автоматически из ORM, но вы все равно можете поместить материал ViewModel в другой файл через частичный класс, и это позволяет избежать значительных накладных расходов на поддержание ViewModel для каждой Модели. Поэтому я предполагаю, что вопрос заключается в следующем: что плохого в том, чтобы позволить модели иметь ориентированный на пользовательский интерфейс код, если вы разделяете его в исходном коде и не используете аспекты пользовательского интерфейса модели ненадлежащим образом?

Ответы [ 3 ]

2 голосов
/ 09 мая 2011

Дело в разделении интересов. Ваша ViewModel создана специально для нужд пользовательского интерфейса; это означает, что содержащиеся в нем данные отформатированы специально для пользовательского интерфейса, тогда как ваша модель отформатирована непосредственно для вашей персистентности или логики домена.

В вашей ситуации изменение вашей модели обязательно требует, чтобы изменение также было внесено в модель представления; в отдельности каждый из них может варьироваться независимо, что уменьшает нежелательные побочные эффекты.

0 голосов
/ 04 октября 2013

Вы не можете "улучшить" свою модель вместо использования модели представления. Теоретически вы могли бы, но это был бы очень плохой код. Просто простой пример: Представьте, что у вас есть класс User только с 2 полями: userName и password. Этот пользовательский класс - ваша модель. Но на вашей странице вы хотите добавить еще одно поле для редактирования / добавления данных: поле проверки пароля. Так вы собираетесь добавить поле password2 в свой класс User? Это плохо! Вместо этого вам лучше создать ViewModel, привязанную к вашему View и основанную на данных вашей ViewModel, а затем создать экземпляр вашей модели и обработать его на других слоях

0 голосов
/ 09 мая 2011

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

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

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