MVC и MVVM

MVC (Model-View-Controller)

Паттерн проектирования приложений, разделяющий систему на три компонента, так что изменение одного минимально влияет на остальные:

  • Model — данные приложения и бизнес-логика.
  • View — пользовательский интерфейс, отображение данных.
  • Controller — логика взаимодействия пользователя с системой; принимает ввод, обновляет модель и view.

Разделение ответственности упрощает поддержку, тестирование и параллельную разработку.


MVVM (Model-View-ViewModel)

Развитие идеи разделения, популярное во фронтенде и UI-фреймворках:

  • Model — данные и бизнес-логика.
  • View — интерфейс.
  • ViewModel — «модель представления»: хранит состояние view и предоставляет данные/команды через двустороннее связывание (data binding).

Ключевое отличие от MVC — двусторонний data binding между View и ViewModel: изменения в UI автоматически отражаются в состоянии и наоборот, без ручного «связывающего» кода в контроллере.

MVCMVVM
ПосредникControllerViewModel
Связывание Viewручноедвусторонний data binding
Типичное применениесерверные веб-приложенияUI-фреймворки, SPA