MVC, MVP, MVVM: что выбрать?

151
технологии 25.webp

Последнее обновление 05.01.2023 — Василий Иванов

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

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

Архитектурные и дизайнерские шаблоны

Архитектурный образец

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

По теме:  8 быстрых способов перенести фотографии с iPhone на iPhone

Шаблон проектирования

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

Разница между архитектурным шаблоном и шаблоном проектирования

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

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

Зачем нужны шаблоны архитектурного проектирования?

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

  • Разбивайте сложные задачи на более простые задачи.
  • Уменьшить количество ошибок.
  • Создавайте тестируемый и поддерживаемый код.

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

Model, View, ViewModel, Controller и Presenter

Прежде чем вы посмотрите на каждый шаблон, вот термины, из которых они состоят:

  • Модель хранит данные и взаимодействует напрямую с базой данных. Модель — это часть, которая представляет ваши данные и логику приложения. Он определяет бизнес-правила, управляющие обработкой, модификацией или обработкой данных.
  • Представление отображает данные модели и отвечает за представление данных в пользовательском интерфейсе.
  • ViewModel является эксклюзивным для шаблона MVVM. Это абстракция уровня представления, а также действует как оболочка для данных модели.
  • Контроллер — это компонент, который объединяет представление и модель.
  • Presenter — это компонент, который существует только в модели MVP. Presenter получает входные данные от компонента представления и обрабатывает данные с помощью модели.

Шаблоны MVC, MVP и MVVM

Модель-представление-контроллер

Архитектурный шаблон MVC был первым, и сегодня он популярен в области веб-приложений. Он был представлен в 1970-х годах. Этот шаблон позволяет создать приложение на основе разделения ответственности (SoC). Это облегчает усилия, необходимые для тестирования, обслуживания и разработки вашего приложения.

В шаблоне MVC модель не понимает представления или контроллера. Наблюдатель модели будет получать оповещение всякий раз, когда происходит изменение представления и контроллера. Контроллер помогает процессу маршрутизации подключить модель к соответствующему представлению.

Некоторые из преимуществ шаблона MVC:

  • Разделение интересов (более сфокусированное).
  • Упрощает тестирование и управление кодом.
  • Способствует отделению слоев приложения.
  • Улучшенная организация кода и возможность повторного использования.

Вот как работает MVC:

Благодаря SoC MVC может уменьшить размер кода и сделать хороший, чистый и управляемый код.

Модель-представление-презентатор

Шаблон MVP имеет два общих компонента с MVC: модель и представление. Он заменяет контроллер на ведущего. Ведущий, как следует из его названия, используется для представления чего-либо. Это позволяет вам легче издеваться над представлением.

В MVP докладчик выполняет функции «посредника», поскольку ему передается вся логика презентации. Представление и презентатор в MVP также независимы друг от друга и взаимодействуют через интерфейс.

Вот иллюстрация того, как работает шаблон MVP:

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

Шаблон Model-View-ViewModel

MVVM — это современная эволюция MVC. Основная цель MVVM — обеспечить четкое разделение между логикой предметной области и уровнем представления. MVVM поддерживает двустороннюю привязку данных между представлением и моделью представления.

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

Вот иллюстрация того, как работает MVVM:

Когда использовать MVC, MVP и MVVM

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

Когда использовать MVC

MVC — это просто реализация разделения интересов. Если вашему приложению необходимо разделить данные (модель), обработку данных (контроллер) и представление данных (представление), MVC подойдет. MVC также хорошо работает в приложениях, где источник данных и/или представление данных могут измениться в любое время.

Когда использовать MVP

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

Когда использовать MVVM

Вы захотите использовать MVVM, когда:

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

Какой узор выбрать?

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

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