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

Целью разработки программного обеспечения является создание решений, которые учитывают потребности и проблемы пользователей и предприятий. Для достижения этого используются различные технологии и шаблоны архитектуры, такие как Модель-Вид-Вид-Модель (MVVM) и Модель-Представление-Ведущий (MVP) используются.

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

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

Структура программного обеспечения

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

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

Архитектурные шаблоны несколько отличаются от шаблонов проектирования, поскольку их сфера применения значительно шире, поскольку решает более технические проблемы, такие как производительность и ограничения оборудования, а также высокая доступность. Примерами различных архитектурных шаблонов являются MVC, MVVM и MVP..

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

Архитектурные паттерны

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

Более новые фреймворки, такие как Django для Python и Rails (Ruby on Rails), уделяют большое внимание быстрому развертыванию, поэтому MVC занимает долю рынка как большую привлекательность в архитектурных шаблонах..

Традиционно разработка пользовательского интерфейса содержала много кода для обработки сложной логики, поэтому шаблоны архитектуры были разработаны для сокращения кода на уровне пользовательского интерфейса, что делает его более «чистым» и управляемым.

Таким образом, с помощью шаблона MVC веб-приложение состоит из

  • модель (данные)
  • Посмотреть (интерфейс для просмотра и управления данными)
  • контроллер (операции и действия, выполняемые с данными)

модель обрабатывает данные и бизнес-логику, и есть нет зависимости между модель и контроллер или Посмотреть.

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

Давайте применим этот шаблон для построения интернет-магазина книг.

Пользователи могут искать, просматривать, регистрировать и покупать книги, а также управлять своими профилями и списками книг. Когда пользователь нажимает на категорию SCI-FI, все связанные книги должны отображаться как доступные.

Контроллеры обрабатывать действия, которые управляют книгами (список, добавление, просмотр и т. д.). Там может быть несколько Контроллеры с одним основным контроллер «Направление движения».

Для этого примера контроллер называется controller_books.php и модель (например, model_books.php) обрабатывает данные и логику, связанные с книгами.

Наконец, разные Взгляды потребуется, например, при добавлении книг в онлайн-корзину или при просмотре деталей книги с изображениями и рецензиями.

controller_books.php получает действие (запрос пользователя) от основного контроллер (например. index.php). controller_books.php анализирует запрос и вызывает model_books.php (данные), чтобы вернуть список книг SCI-FI.

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

Это основа шаблона MVC, который развил порождающие варианты шаблонов архитектуры, такие как Модель-Представление-Представитель (MVP), Модель-Представление-Представление (MVVM), Иерархический-Модель-Представление-Контроллер (HMVC), и модель-вид-адаптер (MVA) и т. д..

MVP Pattern

Модель-Представление-Ведущий (MVP)

Схема MVP был вокруг некоторое время и является вариантом MVC. Он был разработан специально для автоматизации тестирования, где целью было увеличение объема кода, который можно протестировать с помощью автоматизации, и шаблон решает некоторые проблемы с уровнем представления, изолируя бизнес-логику от пользовательского интерфейса..

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

MVP состоит из следующих компонентов с отдельными обязанностями:

  • модель (определяет данные для отображения)
  • Посмотреть (отображает данные из модели и направляет запросы пользователей в докладчик).
  • Ведущий (взаимодействует между View и Model и связывает их вместе)

Посмотреть (веб-страница) отображает и управляет элементами управления страницы путем пересылки событий (пользовательских запросов) на Ведущий которые были начаты в Посмотреть.

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

Посмотрев на MVC и MVP Обе модели имеют общую ответственность за каждый компонент, и они способствуют разделению между Посмотреть (Пользовательский интерфейс) и модель (данные). Значительные различия между этими шаблонами более очевидны в том, как эти шаблоны реализованы..

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

MVVM Pattern

Модель-Вид-Вид-Модель (MVVM)

MVVM шаблон был специально разработан для платформ Windows Presentation Foundation (WPF) и Microsoft Silverlight, и его можно использовать на всех XAML, [я] платформы.

WPF - это система Microsoft, которая отображает пользовательские интерфейсы в программах для Windows и впервые была выпущена в .NET Framework 3.0.

MVVM был уточнен от MVC и в этом паттерне Посмотреть активен с поведениями, событиями и привязкой данных, и Посмотреть синхронизируется с ViewModel (который позволяет разделить представление и предоставляет методы и команды для управления и манипулирования модель.

MVVM состоит из трех основных компонентов:

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

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

ViewModel является посредником между Посмотреть и модель и обрабатывает Посмотреть логика. Он взаимодействует с модель - принимая данные из модель и представить его Посмотреть для отображения.

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

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

Как уже упоминалось ранее с MVP, простые решения не нуждаются в шаблонах архитектуры и дизайна, например «Hello World!» слишком простой, чтобы следовать какой-либо схеме; однако, по мере появления новых функций, функций и компонентов сложность приложения возрастает, а также увеличивается объем кода, которым необходимо управлять..

В итоге

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

Иллюстрированная разница между шаблонами MVP и MVVM:

  • В обоих MVP и MVVM, Посмотреть является точкой входа в приложение
  • В MVP, есть взаимно однозначное сопоставление Посмотреть и Ведущий, в которой MVVM, отношения один ко многим между Посмотреть и ViewModel.
  • MVP используется в основном для приложений Windows Forms и Windows Phone и MVVM предназначен для Silverlight, WPF, Knockout / AngularJS и т. д..