Что такое MVP и MVC и в чем разница? - PullRequest
2010 голосов
/ 05 августа 2008

Если смотреть дальше RAD (перетаскивание и конфигурирование) способа создания пользовательских интерфейсов, который поощряется многими инструментами, вы, вероятно, столкнетесь с тремя шаблонами проектирования, называемыми Model-View-Controller , Model-View-Presenter и Model-View-ViewModel . Мой вопрос состоит из трех частей:

  1. Какие проблемы решают эти шаблоны?
  2. Чем они похожи?
  3. Чем они отличаются?

Ответы [ 22 ]

0 голосов
/ 10 мая 2019

Я думаю, что это изображение Эрвина Вандервалька (и сопровождающая статья ) является лучшим объяснением MVC, MVP и MVVM, их сходства и различий. Статья не отображается в результатах поисковой системы для запросов "MVC, MVP и MVVM", поскольку в заголовке статьи нет слов "MVC" и "MVP"; но это лучшее объяснение, я думаю.

image explaining MVC, MVP and MVVM - by Erwin Vandervalk

( статья также соответствует тому, что дядя Боб Мартин сказал в одном из своих выступлений: что MVC изначально был разработан для небольших компонентов пользовательского интерфейса, а не для архитектуры системы)

0 голосов
/ 12 января 2016

MVP

MVP расшифровывается как Model - View-Presenter. Это стало известно в начале 2007 года, когда Microsoft представила Windows-приложения Smart Client.

Presenter выполняет роль наблюдателя в MVP, которая связывает события и бизнес-логику с моделями.

Привязка к событию представления будет реализована в Presenter из интерфейса представления.

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

Плюсы: Вид имеет только пользовательский интерфейс, а не логику Высокий уровень тестируемости

Минусы: Немного сложнее и больше работы при реализации привязок событий

MVC

MVC расшифровывается как Model-View-Controller. Контроллер отвечает за создание моделей и рендеринг представлений с привязкой моделей.

Контроллер является инициатором, и он решает, какое представление визуализировать.

Плюсы: Акцент на принципе единой ответственности Высокий уровень тестируемости

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

...