MVP в Android

android

Архітектурні шаблони є найважливішою частиною програмного забезпечення. Вони допомагають зберегти код у чистоті, зробити його таким, що розширюється і тестується. Шаблони постійно змінюються і в 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. У кожного з цих підходів є переваги та недоліки. Це означає, що єдиний спосіб відповісти на запитання — зрозуміти плюси і мінуси кожного рішення. Таким чином, ви можете зробити свій вибір більш свідомо.

View

Різниця між MVP та MVC

Ось основні відмінності (або навіть переваги) MVP моделі від MVC:

  • View сильніше відокремлена від моделі, а Presenter є посередниками між ними
  • Легше писати unit-тести
  • Як правило, для кожного View існує свій Presenter

А ось особливості MVC:

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

Model View Presenter (MVP) в Android

Android не визначає зони відповідальності між компонентами програми, тому вся логіка роботи з UI та даними програми описана всередині однієї Activity, що не дозволяє зробити програму розширюваною і легко тестованою. Використання MVP дозволяє вирішити цю проблему.

View

Найкращий спосіб реалізації шаблону MVP

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

Presenter виступає посередником між View і Model. Він отримує дані з моделі і передає їх у View. Але, на відміну від типового MVC, він також вирішує, що потрібно робити, коли ви взаємодієте з View.

View, як правило, реалізується в Activity, яка містить посилання на презентатора. Єдине, що робить View, це викликає методи презентера за будь-якої дії користувача

Model розглядається як постачальник даних, які будуть відображатися в View.

У наступній статті цієї серії ми реалізуємо шаблон Model-View-Presenter в Android.