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 автоматически отражаются в состоянии и наоборот, без ручного «связывающего» кода в контроллере.
| MVC | MVVM | |
|---|---|---|
| Посредник | Controller | ViewModel |
| Связывание View | ручное | двусторонний data binding |
| Типичное применение | серверные веб-приложения | UI-фреймворки, SPA |