Должна ли модель представления содержать логику?

в приложении wpf какова ответственность viewmodel? может ли он управлять всем или только представлять представление и отправлять сообщения / события на бизнес-уровень и получать от него информацию?

1 ответов


короткий ответ, да.

более подробный ответ ...

основными целями шаблона Model-View-ViewModel (MVVM) являются:

  1. разрешить модульное тестирование вашей логики просмотра. Это модульные тесты, применяемые к слою ViewModel, который выполняется без связанного с ним представления.
  2. облегчить рабочий процесс разработчика-дизайнера, минимизируя количество кода, связанного с вашими файлами XAML.

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

теперь, думая о том, где вы найдете свою бизнес-логику. Если вы разместите его в ViewModel, будут ли #1 & #2 выше по-прежнему действительны? Да. Если вы поместите его в отдельный слой, являются #1 и #2 по-прежнему действует? Да.

таким образом, в обоих случаях вы все еще достигаете двух основных целей В MVVM. Какой маршрут вы выберете, действительно зависит от сложности вашего приложения и количества разработчиков, работающих над ним. Поскольку оба эти фактора увеличиваются, вы выиграете от наличия 3 слоев ... или больше!