PassFront
  1. PassFront
  2. База знаний
  3. Структурные паттерны

Чем 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, но отлаживать, кто изменил состояние, становится сложнее.

Другие вопросы раздела