В чем разница между 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 ответа:
этой должно быть хорошим стартером. На самом деле, выбранная вами "платформа" также играет большую роль в том, как вы используете эти шаблоны. Например, MVVM естественно подходит для WPF, в то время как MVP хорошо работает с Windows Forms. ASP.Net MVC говорит сам за себя.
некоторые основные различия могут быть записаны вкратце:
MVC:
традиционный MVC, где есть
- модель: действует как модель для данных
- View: имеет дело с видом на пользователя, который может быть UI
- контроллер: управляет взаимодействием между моделью и представлением, где представление вызывает контроллер для обновления модели. При необходимости 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 могут совместно использовать одну и ту же модель представления.