Чем MVVM отличается от MVP?
Суть
Оба паттерна выносят логику из контроллера в отдельный объект. Разница — в направлении связи между этим объектом и View:
- MVP: Presenter знает View (через протокол,
weak) и императивно командует ей:view.showLoading(true),view.render(rows:). View пассивна. - MVVM: ViewModel не знает View. Она публикует наблюдаемое состояние (
rows,isLoading), а View сама подписывается и перерисовывается. Связь — через binding.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep