От MVC к MVVM - PullRequest
       37

От MVC к MVVM

9 голосов
/ 17 сентября 2010

Я не хочу хранить классы моей доменной модели в той же сборке, что и моя веб-платформа. Поэтому папка Models в структуре проекта для меня бесполезна. Однако я только что закончил учебник Music Store и заметил, как они создают папку «ViewModels», которая имеет для меня большой смысл.

Имеет ли смысл просто рассматривать папку Models как папку ViewModels? Много ли людей делают это? Есть ли такая модель как MVVM?

Ответы [ 4 ]

15 голосов
/ 17 сентября 2010

Модель представления - это нечто, что добавляет еще один уровень абстракции, если вы не полностью доверяете своему коду презентации (или просто находите этот вид инкапсуляции более элегантным).

То есть, если ваш Person класс имеет метод Delete или свойство SSNumber, вы можете не передавать этот объект в представление, поскольку это концептуально позволяет ему вызывать Delete или отображать SSN, чего он не должен иметь.
Чтобы избежать этой ситуации, вы создаете другой класс, PersonViewModel, который содержит только информацию / методы, которые можно безопасно вызывать из представления.

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

5 голосов
/ 18 октября 2011

Я думаю, что вы ссылаетесь на шаблон MVVM ( Model-View-ViewModel )

Нет такой вещи, как MVVC.

4 голосов
/ 19 октября 2011

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

Представление, с другой стороны, представляет собой другую перспективу, вам в основном нужно сгладить доменные объекты, чтобы упростить их привязку, вас также могут не интересовать некоторые атрибуты и свойства объектов модели домена на уровне представления, поэтому Модель представления (View Model) представляет собой более настраиваемую модель для целей просмотра, структура может быть другой, вы можете удалить некоторые поля, которые не нужны для представления, а также добавить некоторые поля только для целей представления (например, «IsIdEnabled» или SliderWidth. , ...)

0 голосов
/ 04 сентября 2012

Как указано выше в Dx_, такого понятия, как MVVC, не существует.

Но этот прекрасный разговор очень хорошо описывает MVVM: Deep Dive MVVM

...