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

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

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

Шаблон "Модель — Представление — Контроллер" (MVC)

Шаблон MVC предлагает разделить код на 3 компонента. При создании класса / файла приложения разработчик должен разделить его на один из следующих трех уровней:

Модель: этот компонент хранит данные приложения. Он ничего не знает об интерфейсе. Модель отвечает за обработку логики предметной области (бизнес-правила реального мира) и взаимодействие с базой данных и сетевыми уровнями.

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

Контроллер: этот компонент устанавливает связь между представлением и моделью. Он содержит основную логику приложения, получает информацию о поведении пользователя и обновляет Модель в соответствии с потребностями.

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

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

Модель: слой для хранения данных. Он отвечает за обработку логики предметной области (бизнес-правила реального мира) и связь с базой данных и сетевыми уровнями.

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

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

Ключевые различия между шаблонами проектирования MVC и MVP

MVC (Контроллер представления модели)

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

Одна из старейших программных архитектур Разработан как вторая итерация архитектуры программного обеспечения, усовершенствованная от MVC.
Пользовательский интерфейс (представление) и механизм доступа к данным (модель) тесно связаны. Вид слабо связан с моделью.
Уровень контроллера и представления попадает в одну и ту же активность / фрагмент Связь между View-Presenter и Presenter-Model происходит через интерфейс.
Вводимые пользователем данные обрабатываются контроллером, который инструктирует модель для дальнейших операций. Пользовательский ввод обрабатывается View, который инструктирует докладчика вызывать соответствующие функции.
Между контроллером и представлением существует взаимосвязь «многие к одному», поскольку один контроллер может выбирать разные представления в зависимости от требуемых операций. Между Presenter и View существует взаимно-однозначная связь, поскольку один класс Presenter управляет одним View одновременно.
Контроллер несет полную ответственность, поскольку он создает соответствующее представление и взаимодействует с моделью в соответствии с запросом пользователя. Представление является основным в этой схеме как методы вызова представления Presenter, которые в дальнейшем направляют модель.
Ограниченная поддержка модульного тестирования Модульное тестирование широко поддерживается.
Хотите более динамичную и конкурентную среду для изучения основ Android?
Щелкните здесь, чтобы перейти к уникальному руководству, составленному нашими экспертами с целью мгновенно подготовить вашу отрасль!