MVVM и MVP

Anonim

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

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

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

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

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

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

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

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

Шаблоны архитектуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это основные принципы шаблона MVC, в результате которого были разработаны нерегулярные вариации шаблонов архитектуры, такие как Model-View-Presenter (MVP), Model-View-ViewModel (MVVM), Иерархический-Модель-Просмотр-Контроллер (HMVC), и Model-View-Adapter (MVA) и т. д.

Шаблон MVP

Модель-View-Presenter (MVP)

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

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

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

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

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

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

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

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

Шаблон MVVM

Model-View-ViewModel (MVVM)

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

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

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

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

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