Skip to main content

Чим відрізняється MVVM від MVC?

Різниця між MVC і MVVM - у тому, як вони пов'язують логіку та інтерфейс, і хто керує даними на екрані. Обидва патерни ділять застосунок на три частини, але роблять це по-різному: у MVC центром є контролер, у MVVM - модель представлення (ViewModel), яка працює через автоматичну прив'язку даних (data binding).


1. Структурна відмінність

КомпонентMVCMVVM
Modelзберігає дані та бізнес-логікуте саме
Viewвідображає дані і приймає ввідвідображає дані, автоматично пов'язана з ViewModel
Controller / ViewModelController керує потоком між View і ModelViewModel зберігає стан і керує логікою UI, не знаючи про View

2. Як влаштована взаємодія

MVC

javascript
Користувач → ViewControllerModelView
  • Контролер отримує дії користувача, викликає методи моделі і вирішує, що відобразити.
  • Усі оновлення інтерфейсу відбуваються вручну - контролер передає дані назад у View.

Приклад: Користувач натискає кнопку "Зберегти" → Controller викликає Model.save() → повертає результат → вручну оновлює View.


MVVM

javascript
Користувач → ViewViewModelModel
  • Між View і ViewModel діє двостороння прив'язка даних (data binding).
  • Коли модель оновлюється - інтерфейс змінюється автоматично.
  • ViewModel не керує інтерфейсом напряму - вона просто зберігає "реактивний стан".

Приклад: Поле "Ім'я користувача" пов'язане з username у ViewModel. При введенні тексту ViewModel оновлюється автоматично, і навпаки.


3. Головна ідея

ПатернЦентр взаємодіїЗв'язок із View
MVCКонтролер керує всім потокомЧерез явні виклики методів
MVVMViewModel - джерело даних і логікиЧерез data binding, без прямого коду

4. Практичні відмінності

КритерійMVCMVVM
Прив'язка данихРучнаАвтоматична (двостороння)
Залежність від ViewКонтролер знає ViewViewModel не знає View
ТестованістьСередняВисока (можна тестувати без UI)
Кількість коду UIБільше (оновлення вручну)Менше (binding робить усе)
СкладністьПростіше зрозумітиСкладніше в налаштуванні, але чистіша логіка

5. Де застосовуються

  • MVC - класика для вебфреймворків: Django, Laravel, ASP.NET MVC, Spring MVC.
  • MVVM - стандарт для реактивних UI: WPF, SwiftUI, Android Jetpack, Vue, Angular, React (через hooks/state).

Підсумок:

MVC - контролер сам керує відображенням даних.

MVVM - ViewModel зберігає стан, а інтерфейс оновлюється сам через прив'язку даних.

У MVC логіка і UI пов'язані напряму, у MVVM - через реактивний міст, який робить застосунок гнучкішим і тестованішим.

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

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

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