Ответ вслух Middle SOLID и принципы обновлено

MVC, MVVM и почему React не MVC

Вопрос

Знаешь MVC, MVP, MVVM? Чем отличаются и к чему ближе React?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

MVC - контроллер принимает ввод, изменяет модель, вид отражает модель. MVP - вид пассивен, всё решает презентер.

Что должно прозвучать в ответе

  • MVC - контроллер принимает ввод, меняет модель, вид перерисовывается

  • MVP - презентер посредник, вид пассивен

  • MVVM - двустороннее связывание через вью-модель, это Angular и v-model во Vue

  • React - однонаправленный поток: состояние → вид, события → обновление состояния

  • называть React «видом из MVC» неверно: нет контроллера и нет двусторонней связи

  • аналогия мешает больше, чем помогает

Что могут спросить следом

  • А Flux и Redux - это что по этой классификации?

Разбор

MVC - контроллер принимает ввод, изменяет модель, вид отражает модель. MVP - вид пассивен, всё решает презентер. MVVM - вью-модель и двустороннее связывание: изменение в поле меняет модель и наоборот. Это Angular и v-model во Vue.

React ни к одной из трёх не сводится. У него однонаправленный поток: состояние определяет отображение, события порождают новое состояние. Контроллера нет, двустороннего связывания как механизма нет - его имитируют вручную парой «значение + обработчик».

Частый ответ «React - это V из MVC» звучит заученно и неверно. Лучше сказать так: «Проводить аналогию можно, но она мешает: в React нет контроллера и нет двустороннего связывания, поэтому привычки из MVVM приводят к лишнему состоянию».

Частые ошибки

  • «React - это MVC»: неверно и сразу слышно.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.