MVVM Уникальные преимущества - PullRequest
3 голосов
/ 09 апреля 2011

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

Какие уникальные преимущества я получаю от использования MVVM, которые я не могу получить ни от каких других реализаций? MVC. NTiers, или что-нибудь еще. Я на самом деле не ищу идентифицирующие функции, которые делают MVVM другим. Я ищу вещи, которые нельзя сделать ни в чем другом, кроме MVVM. Мои нынешние знания об этом заставляют меня думать, что MVVM - это другой способ сделать то же самое, что вводит больше сложности, чем, скажем, nTiers. Я не хочу брать точку зрения, что введение этой сложности, является отрицательной вещью. Если это оправдано предоставлением уникальных преимуществ, то я хотел бы знать это.

Гугл в глубине, только поднял оборону MVVM. Не оказалось этих уникальных преимуществ.

Ответы [ 4 ]

5 голосов
/ 09 апреля 2011

Единственное преимущество, которое я могу придумать, относится к шаблону MVVM над MVP (вариант которого он является) в том, что в MVVM вам не нужно явно присоединять View к ViewModel (Presenter), когда выбудет в реализации MVP.Это обеспечивается средствами, предоставляемыми WPF.(BindingExpressions наиболее важно) В MVP вы должны определить интерфейс, который представляет, как докладчик может взаимодействовать с представлением (IxxxxView - это обычный шаблон именования), и когда вы создаете докладчика, вы передаете ему интерфейс представления (который прикреплендля просмотра экземпляра).Это также допускает некоторые варианты представления поверх обычного презентатора.

В MVVM вы не определяете этот интерфейс явно.Вы определяете свою ViewModel и используете Binding для привязки ViewModel (логика) к View (презентация).В View нет внутренних знаний о ViewModel, поскольку привязки (если они выполняются в XAML) разрешаются во время выполнения (или иногда в конструкторе).Теоретически приложение WPF должно быть полностью управляемым без пользовательского интерфейса.

Преимущество, которое вы получаете от MVVM / MVP / MVC, - это, прежде всего, разделение проблем между представлением и бизнес-логикой и тем, что это позволяет.Это позволяет специально квалифицированным ролям (читай: фактическим графическим дизайнерам) работать над презентацией, не зная ничего о коде C # / VB.NET.Они могут построить презентацию, и разработчики придут и подключат ее потом.

Также у разработчиков теперь есть шаблоны, позволяющие автоматизировать тестирование кода с помощью модульных тестов.Поскольку приложения могут управляться (в основном) без пользовательского интерфейса, модульные тесты являются отличным инструментом, позволяющим разработчикам по-настоящему использовать весь код, который они пишут.

На самом деле это не касается сравнения между "N-Уровень "и MVVM, хотя, потому что я не знаю, что это сравнение яблок с яблоками.Возможно, приложения MVFM WPF являются N-уровневыми приложениями с несколькими логическими уровнями в решении.

В конечном счете, MVVM / MVP / MVC - это очень сопоставимые модели с одинаковыми преимуществами.Хотя есть одна вещь, которая заключается в том, что MVVM, насколько я знаю, может использоваться только тогда, когда WPF / Silverlight является предпочтительной технологией представления.И я думаю, что это особенное преимущество MVVM.Это конкретный и оптимальный шаблон для нас в WPF / Silverlight.После использования MVVM было бы неудобно использовать любой другой шаблон в WPF.

2 голосов
/ 09 апреля 2011

MVVM - это просто зависящая от технологии реализация шаблона модели представления.

Основным преимуществом является то, что если вы сохраняете чистое разделение разметки и кода , вы можете сосредоточиться на поведении приложения (т.е. коде) и позволить профессиональным графическим дизайнерам о применении внешнего вида приложения.

Эти две задачи могут даже выполняться параллельно двумя разными людьми, использующими разные инструменты (например, Visual Studio и Expression).

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

2 голосов
/ 09 апреля 2011

MVVM - это всего лишь крошечный поворот в шаблоне «Модель-Представление-Представитель».Единственная разница с MVVM состоит в том, что ваши классы 'view-model' разработаны специально для того, чтобы хорошо играть с функциями привязки данных, встроенными в WPF и Silverlight, чтобы минимизировать потребность в любом коде в Viewсам (сохраняя только разметку View XAML, которую можно редактировать / заменять в конструкторе).Если вы используете WPF или Silverlight, это определенно стоит внимательно посмотреть.Если вы используете что-то еще, это не совсем применимо.

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

Вот статья о среде Java, в которой используются MVVM («модель представления»), MVP («пассивное представление») и гибридный MVVMP / MVC («контролирующий контроллер»).Я думаю, что это актуально для вопроса, так как он сравнивает шаблоны, и то, как он выполняется вне WPF, может помочь сформировать мнение о том, что такое шаблон, какова структура, и каковы выбор и силы при попытке использовать событие.управляемые шаблоны проектирования GUI.

Реализация управляемых событиями шаблонов GUI с использованием ZK Java AJAX framework

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

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