5 популярных архитектурных паттернов: VIPER, MVVM, MVC, MVP, MVI(продолжение
предыдущего поста)
#### 1. VIPER (View, Interactor, Presenter, Entity, Router)
Компоненты (на изображении выделены блоками):*
View — отвечает за отображение данных и сбор пользовательских взаимодействий (иконка «User → View»).
*
Interactor — содержит бизнес-логику приложения (иконка с человеком за ноутбуком, подписана «Interactor»).
*
Presenter — связующее звено между View и Interactor: подготавливает данные для отображения и реагирует на действия пользователя (иконка «Presenter»).
*
Entity — хранит базовые структуры данных приложения (обозначен как «Entity»).
*
Router — управляет навигацией (выделен как «Router» в центре схемы).
Особенности (согласно изображению):* приложение делится на 5 чётких частей;
* улучшает тестируемость и разделение ответственности;
* данные передаются через уведомления (Notify) и обновления (Updates).
Идеально подходит для крупных приложений со сложной бизнес-логикой.
#### 2. MVVM (Model-View-ViewModel)
Компоненты:*
View — отображает данные, состояние контролируется ViewModel (иконка «View»).
*
ViewModel — абстрагирует View, включает логику изменения состояния View, связывает Model и View (обозначен как «View model»).
*
Model — содержит основную функциональность и данные (иконка «Model»).
Ключевые особенности (на схеме):* ViewModel связывает данные модели с View;
* поддерживает
двустороннюю привязку данных (Data binding, показано стрелками между View и ViewModel);
* изменения состояния (Change state) передаются от ViewModel к Model.
Применяется в WPF, Xamarin и других XAML-фреймворках.
#### 3. MVC (Model-View-Controller)
Компоненты (показаны на схеме):*
Model — хранит данные и логику приложения (иконка «Model»).
*
View — отображает информацию пользователю (иконка «View»).
*
Controller — обрабатывает пользовательский ввод, взаимодействует с Model и обновляет View (центральная иконка «Controller»).
Логика взаимодействия (на изображении):1. Пользователь делает запрос → Controller.
2. Controller взаимодействует с Model.
3. Model возвращает данные → Controller обновляет View.
Особенности:* один из старейших и наиболее распространённых паттернов;
* контроллер управляет вводом и обновлениями.
Подходит для простых приложений с чёткой структурой.
#### 4. MVP (Model-View-Presenter)
Компоненты:*
View — пассивное представление данных (иконка «View»), не обрабатывает логику.
*
Model — хранит данные (иконка «Model»).
*
Presenter — управляет взаимодействием между View и Model (иконка «Presenter»).
Взаимодействие (на схеме):1. View передаёт обновления → Presenter.
2. Presenter взаимодействует с Model → получает данные.
3. Presenter возвращает данные в View.
Ключевые особенности:* Presenter связывает Model и пассивное View;
* Presenter обрабатывает логику пользовательского интерфейса (UI logic).
Используется там, где важно отделить логику представления от View.
#### 5. MVI (Model-View-Intent)
Компоненты (согласно изображению):*
View — отображает интерфейс (иконка «View»).
*
Intent — представляет пользовательские действия (намерения), запускает изменения состояния (центральная иконка «Intent» с мишенью).
*
Model — обрабатывает логику и хранит состояние (иконка «Model»).
Особенности потока данных (на схеме):*
Однонаправленный поток: Intent → Model → View.
*
Фокус на состоянии (state) и реактивности (reactivity) — изменения состояния обрабатываются предсказуемо.
* Данные поступают из интернета или локальных источников → обрабатываются Model → отображаются в View.
Идеально подходит для приложений, где критично управление состоянием (например, в реактивных приложениях).