Skip to main content
Практика завдань

MVC (модель-подання-контролер) та MVP (модель-подання-презентер) патерни проектування

MVC (Model-View-Controller) та MVP (Model-View-Presenter) — це архітектурні патерни, які допомагають організувати код у великих застосунках. Вони розділяють логіку застосунку на окремі компоненти, що робить її більш зрозумілою, підтримуваною та тестованою.

MVC (Model - View - Controller)

Model-View-Controller — це один з найпопулярніших патернів. Він ділить застосунок на три шари:

Model

  • Відповідає за дані та бізнес-логіку.
  • Отримує та обробляє дані (наприклад, з API або бази даних).

View

  • Відповідає за рендеринг даних користувачу.
  • Не містить логіки, окрім UI.

Controller

  • З'єднує View та Model.
  • Обробляє дії користувача та оновлює модель або вид.

Приклад потоку даних: Користувач ➜ ViewControllerModelControllerView

Особливості MVC:

  • View може запитувати дані безпосередньо з моделі.
  • Controller "реагує" на дії користувача.

MVP (Model - View - Presenter)

Model-View-Presenter — це еволюція MVC, яка спрощує тестування та сильніше ізолює View.

Model

  • Така ж, як у MVC — управляє даними та бізнес-логікою.

View

  • Відповідає тільки за рендеринг та має мінімальну логіку.
  • Нічого не знає про модель.

Presenter

  • Керує логікою між View та Model.
  • Отримує дані з Model і передає їх до View.
  • View та Presenter з'єднані через інтерфейси, що спрощує тестування Presenter без UI.

Приклад потоку даних: Користувач ➜ ViewPresenterModelPresenterView


Порівняння MVC та MVP

ХарактеристикаMVCMVP
Хто управляє логікою?ControllerPresenter
View знає про Model?Може знатиНі
Model знає про View?НіНі
ТестованістьСередняВисока
Де використовуєтьсяВеб-фреймворки, бекендAndroid, десктоп, складний UI

Коли використовувати

СценарійПідхід
Простий застосунок з мінімальною логікоюMVC
Великий застосунок, що вимагає модульності та тестованостіMVP
Розробка для Android або обмежений UIMVP
React / Vue / AngularЧасто використовує MVVM або FSD, але принципи схожі

Корисно знати:

У сучасному фронтенді все частіше використовуються варіації цих патернів: MVVM, Redux, Flux та архітектура Feature-Sliced Design (FSD).

Зміст

MVC (Model - View - Controller)MVP (Model - View - Presenter)Порівняння MVC та MVPКоли використовувати

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань