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

Опубликовано: 1 Декабря, 2021

Разработчики всегда предпочитают разработку приложения для Android с применением шаблона архитектуры программного обеспечения. Шаблон архитектуры придает модульность файлам проекта и гарантирует, что все коды будут охвачены модульным тестированием. Это облегчает разработчикам задачу по сопровождению программного обеспечения и расширению функций приложения в будущем. MVP (Model - View - Presenter) и Model - View - ViewModel (MVVM) - две самые популярные среди разработчиков архитектуры Android, признанные в отрасли.

Модель - представление - шаблон докладчика (MVP)

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

  • Модель: слой для хранения данных. Он отвечает за обработку логики предметной области (бизнес-правила реального мира) и связь с базой данных и сетевыми уровнями.
  • Вид: слой UI (пользовательского интерфейса). Он обеспечивает визуализацию данных и отслеживает действия пользователя, чтобы уведомить ведущего.
  • Presenter: извлекает данные из модели и применяет логику пользовательского интерфейса, чтобы решить, что отображать. Он управляет состоянием представления и выполняет действия в соответствии с уведомлением пользователя о вводе из представления.

Модель - представление - шаблон ViewModel (MVVM)

Шаблон MVVM имеет некоторые сходства с шаблоном проектирования MVP (Модель - Представление - Презентатор), поскольку роль Презентатора играет ViewModel . Однако недостатки шаблона MVP были устранены с помощью MVVM. Он предлагает отделить логику представления данных (представления или пользовательский интерфейс) от основной части бизнес-логики приложения. К отдельным слоям кода MVVM относятся:

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

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

MVP (презентация представления модели)

MVVM (модель представления ViewModel)

Это решает проблему наличия зависимого представления за счет использования Presenter в качестве канала связи между моделью и представлением. Этот шаблон архитектуры в большей степени ориентирован на события, поскольку он использует привязку данных и, таким образом, упрощает отделение основной бизнес-логики от представления.
Между Presenter и View существует взаимно-однозначная связь. Множественное представление можно сопоставить с помощью одной модели представления .
Ведущий знает о Представлении. ViewModel не имеет ссылки на View .
Слой модели возвращает ответ на ввод пользователя в Presenter, который пересылает его в View . После выполнения операций в соответствии с вводом пользователя уровень модели возвращает ответ представлению .
Presenter обрабатывает поток приложения, а View - это фактическое приложение. ViewModel - это фактическое приложение, а View - это интерфейс, с помощью которого пользователь может взаимодействовать с приложением.
Файл проекта будет содержать больше классов, а также код. Файл проекта будет содержать больше классов, но меньше кода для каждого класса.
Идеально подходит для простых и сложных приложений. Не идеален для небольших проектов.
Простое выполнение модульного тестирования, но тесная связь View и Presenter может немного затруднить его. Тестируемость модулей самая высокая в этой архитектуре.
Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!