Разница между MVP MVC и MVVM

Люди, которые прошли через многие ссылки/блоги. Я вижу, что большинство из них не в состоянии четко общаться на языке непрофессионалов, а также технические различия между MVP, MVVM и MVC. Я знаю, что означает каждый персонаж, а также работал над MVP. Но не понимаю, кто-то задает мне тот же вопрос. Почему я не могу использовать контроллер в MvP вместо Presenter? И почему View Model в MVVM вместо презентатора и как он отличается? Я могу в одном согласии сказать: "MVC оптимизирован для ASP.NET, а также имеет шаблоны в VS, MVP оптимизирован для winforms и MVVM для SL/WPF, поскольку он поддерживает встроенные функции привязки и т.д.". Но я чувствую, что это не то, что я должен понимать, но подробно и глубоко. Может ли кто-то пролить свет на это с подробным объяснением и использованием и фактической причиной выбора. Спасибо всем...

Ответы

Ответ 1

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

Сначала я узнал MVVM, а затем MVC. Я знаю MVP и как он работает в теории, однако я никогда не строил с ним приложение.

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

В MVVM ваши классы кода (ViewModels) являются вашим приложением, а ваш Views - это просто удобный интерфейс, который находится поверх кода приложения и позволяет пользователям взаимодействовать с ним. Это означает, что ViewModels имеет огромную работу, потому что это ваше приложение и отвечает за все: от потока приложений до бизнес-логики.

С MVC ваше приложение Views - ваше приложение, а ваш Controller обрабатывает поток приложений. Логика приложения обычно находится в ViewModels, которые считаются частью M в MVC (sidenote: M в MVC не может считаться тем же, что и M в MVVM, потому что слой MVC M содержит больше чем уровень MVVM M). Пользователю предоставляется экран (View), он взаимодействует с ним, а затем передает что-то в Controller, а Controller решает, кто что делает с данными и возвращает пользователю View.

Я не использовал MVP, но мое понимание этого было очень похоже на MVC, но оптимизировано для настольного приложения, а не для клиент-серверного приложения. Views - это фактическое приложение, а Presenter обрабатывает события приложений и бизнес-логику.

Ответ 2

В MVC у вас есть Model View Controller, связанный как треугольник В MVP у вас есть модель View Presenter, связанная с линеаризацией В основном MVC и MVP очень похожи, но проще работать с MVC, даже если у вас уже есть встроенный плагин MS для создания и разделения вашего M-V-C, обеспечивающего его преимущества С MVP ваше приложение будет выглядеть как общее приложение ASP.NET, это означает: no Razor, no.cshtml для просмотров и т.д., И вам придется иметь дело со структурой самостоятельно. MVVM обычно используется в Silverlight/WPF, и для тех техников это лучший выбор. Идея MVVM и MVC в значительной степени схожа. Вы также можете применять MVVM на клиентской стороне своего веб-приложения, если используете нокаут.