Этот вопрос проверяет понимание семейства MV* паттернов (MVC, MVP, MVVM) их общих черт и различий.
Все MV* паттерны разделяют приложение на Model, View и промежуточный компонент (Controller, Presenter, ViewModel). Отличаются они тем, как организована коммуникация: MVC через Controller, MVP через Presenter с интерфейсами, MVVM через биндинги и ViewModel.
Паттерны проектирования помогают организовать код в iOS приложениях.
1. Общее:
Разделение ответственности.
Model представляет данные, View отображает, промежуточный компонент mediates.
2. Различия:
MVC: Controller обрабатывает действия, но часто становится fat.
MVP: Presenter содержит логику, View пассивна.
MVVM: ViewModel предоставляет данные для View через биндинги.
Пример:
В iOS традиционно используется MVC, но MVVM становится популярнее благодаря биндингам.