Выбор ответа Junior MVC, MVP, MVVM, MVI, VIPER спрашивают часто обновлено
Почему MVC в iOS называют Massive View Controller
Вопрос
Почему классический Apple MVC в iOS часто превращается в Massive View Controller?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Контроллер связан с view и жизненным циклом, и в него складывают UI-логику, запросы и форматирование. В UIKit UIViewController одновременно управляет view и получает события жизненного цикла, поэтому туда «естественно» попадают сеть, валидация, форматирование и навигация.
Варианты ответа
- MVC запрещает выносить код из контроллера в отдельные классы, иначе нарушается разделение ролей
- В MVC модель обязана быть синглтоном, поэтому вся работа с ней идёт через контроллер
- Контроллер связан с view и жизненным циклом, и в него складывают UI-логику, запросы и форматированиеправильный ответ
- MVC не поддерживает Auto Layout, поэтому вёрстку приходится писать вручную в контроллере
Разбор
В UIKit UIViewController одновременно управляет view и получает события жизненного цикла, поэтому туда «естественно» попадают сеть, валидация, форматирование и навигация. Паттерн этого не требует, это следствие отсутствия границ. MVVM, MVP и VIPER как раз вводят отдельные объекты для логики. Запретов на вынос кода или требований к модели в MVC нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «MVC, MVP, MVVM, MVI, VIPER»
- Выбор паттерна для небольшого приложения
- MVC, MVP, MVVM, MVI, VIPER коротко
- TCA, BLoC, Redux: общий принцип
- Однонаправленный поток данных в MVI
- Чем MVP отличается от MVVM
- Суть MVVM
- Одноразовые события во view model
- Код-ревью: view model экрана заказа (Kotlin)