В чем разница между MVC, MVP & MVVM Design pattern с точки зрения кодирования c#


Если мы ищем Google, используя фразу "В чем разница между MVC, MVP и MVVM Design pattern", то мы можем получить несколько URL-адресов, которые обсуждают разница между MVC MVP & MVVM Design pattern теоретически нравится:

MVP

используется в ситуациях, когда привязка через datacontext невозможна. Windows Forms является прекрасным примером этого. Для того, чтобы отделить представление от модели, нужен ведущий. Так как вид не может непосредственно привязка к презентатору, информация должна быть передана в представление через интерфейс (IView).

MVVM

используется в ситуациях, когда возможна привязка через datacontext. Зачем? Различные интерфейсы IView для каждого представления удаляются, что означает меньше кода для обслуживания. Некоторые примеры, где MVVM возможно включают проекты WPF и javascript с использованием нокаута.

MVC

использовать в ситуациях, где связь между представлением и остальной частью программы не всегда доступны (и вы не можете эффективно использовать MVVM или MVP). Это четко описывает ситуацию, когда веб-API отделен от данных, отправленных в клиентские браузеры. Microsoft's ASP.NET MVC является отличным инструментом для управления такими ситуациями и обеспечивает очень четкую структуру MVC


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

Это было бы очень приятно, если я получу статью, в которой обсуждается разница между этими 3 шаблонами проектирования (MVC, MVP и MVVM) вместе с кодом.

Я хотел бы получить в свои руки исходный код 3 подобных CRUD приложения, которые были реализованы с помощью этих трех шаблонов проектирования (MVC, MVP & MVVM). Так что я могу пройти через код и понять, как нужно писать код для этих трех шаблонов дизайна (MVC, MVP & MVVM).

Итак, если такая статья существует, которая обсуждает, как код будет выглядеть по-другому для этих 3 шаблонов проектирования (MVC, MVP & MVVM), то, пожалуйста, перенаправьте меня на эту статью.

4 153

4 ответа:

этой должно быть хорошим стартером. На самом деле, выбранная вами "платформа" также играет большую роль в том, как вы используете эти шаблоны. Например, MVVM естественно подходит для WPF, в то время как MVP хорошо работает с Windows Forms. ASP.Net MVC говорит сам за себя.

некоторые основные различия могут быть записаны вкратце:

MVC:

традиционный MVC, где есть

  1. модель: действует как модель для данных
  2. View: имеет дело с видом на пользователя, который может быть UI
  3. контроллер: управляет взаимодействием между моделью и представлением, где представление вызывает контроллер для обновления модели. При необходимости View может вызывать несколько контроллеров.

MVP:

похож на традиционный MVC, но контроллер заменен Презентатором. Но ведущий, в отличие от контроллера, также отвечает за изменение вида. Представление обычно не вызывает презентатора.

MVVM

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

отличное объяснение по ссылке:http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx

давайте сначала посмотрим на MVC

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

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

есть один способ стрелка от контроллера для просмотра. Это связано с тем, что представление не имеет никаких знаний или ссылок на контроллер.

контроллер действительно передает модель, поэтому есть знание между представлением и ожидаемой моделью перешел в него, но не контроллер, обслуживающий его.

MVP-Model View Presenter

теперь давайте посмотрим на шаблон MVP. Он очень похож на MVC, за исключением некоторых ключевых различий:

ввод начинается с представления, а не с презентатора.

существует взаимно однозначное сопоставление между представлением и связанным Презентатором.

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

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

MVVM-Model View View Model

Итак, с шаблонами MVC и MVP перед нами, давайте посмотрим на шаблон MVVM и посмотрим, какие различия он имеет:

вход начинается с Вида, а не с вида Модель.

в то время как представление содержит ссылку на модель представления, модель представления не имеет информации о представлении. Вот почему возможно иметь сопоставление "один ко многим" между различными представлениями и одной моделью представления...даже между технологиями. Например, представление WPF и представление Silverlight могут совместно использовать одну и ту же модель представления.

MVC, MVP, MVVM

MVC (старый)

MVP (более модульный из-за своего низк-соединения. Ведущий является посредником между представлением и моделью)

MVVM (у вас уже есть двусторонняя привязка между VM и компонентом UI, поэтому она более автоматизирована, чем MVP) enter image description here

другое изображение: enter image description here