Чем MVC отличается от MVVM?
Структурные паттерны
MVC разделяет приложение на модель, представление и контроллер-посредник, а MVVM заменяет посредника на ViewModel с двусторонним биндингом: представление само синхронизируется с состоянием.
MVC
- Model — данные и бизнес-логика, ничего не знает об интерфейсе.
- View — отображение.
- Controller — принимает ввод, дёргает модель, выбирает представление. Классика серверных фреймворков: запрос → контроллер → модель → шаблон.
MVVM
- ViewModel держит состояние экрана и команды; View подписана на неё через data binding — изменения текут в обе стороны автоматически.
- Меньше ручной синхронизации, ViewModel полностью тестируется без UI.
Сравнение
- В MVC контроллер обновляет представление явно; в MVVM синхронизацию берёт на себя биндинг.
- Биндинг упрощает код, но усложняет отладку «кто и когда изменил состояние».
Коротко для собеседования
В MVC контроллер принимает ввод и явно обновляет представление, а в MVVM View привязана к ViewModel и синхронизируется сама через data binding. MVVM убирает ручную синхронизацию и упрощает тесты без UI, но отлаживать, кто изменил состояние, становится сложнее.