MVP в Android. Часть 1

Архитектурные шаблоны являются важнейшей частью ПО. Они помогают сохранить код в чистоте, сделать его расширяемым и тестируемым. Шаблоны постоянно меняются и в Android на смену Model View Controller приходит Model View Presenter.

В первой части этой статьи мы обсудим основные различия между MVC (Model View Controller) и MVP (Model View Presenter), почему в MVC уступает MVP и какие у второй модели есть преимущества.

Android SDK

Когда мы анализируем Android SDK и зависимости между лейаутами, активити и данными, то нам кажется, что Android идеально соответствует модели MVC. Однако при увеличении размера и сложности проекта, решение, которое предлагает MVC становится недостаточным. Особенно это становится заметным при попытке внедрения unit-тестов в проект.

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

Что мне использовать: MVP или MVC?

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

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

Вот основные отличия (или даже преимущества) MVP модели от MVC:

  • View сильнее отделена от модели, а Presenter является посредниками между ними
  • Легче писать unit-тесты
  • Как правило, для каждого View существует свой Presenter

А вот особенности MVC:

  • Controller может взаимодействовать с несколькими View
  • View может напрямую общаться с моделью

Model View Presenter (MVP) в Android

Android не определяет зоны ответственности между компонентами приложения, поэтому вся логика работы с UI и данными приложения описана внутри одной Activity, что не позволяет сделать приложение расширяемым и легко тестируемым. Использование MVP позволяет решить эту проблему.

Лучший способ реализации шаблона MVP

Есть много интересных подходов для реализации MVP, но не зависимо от выбранного решения должны сохранятся три компонента:

Presenter

Presenter выступает в качестве посредника между View и Model. Он извлекает данные из модели и передает их во View. Но в отличие от типичного MVC, он также решает, что нужно делать, когда вы взаимодействуете с View.

View

View, как правило, реализуется в Activity, которая содержит ссылку на презентер. Единственное, что делает View, это вызывает методы презентера при каком-либо действии пользователя

Model

Model рассматривается в качестве поставщика данных, которые будут отображаться во View.

В следующей статье этой серии, мы реализуем шаблон Model-View-Presenter в Android.

Источник: MVP in Android

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Ваш комментарий будет опубликован после модерации