Привет, это Катя, Flutter Dev Friflex. Сегодня расскажу про архитектурный подход MVP — один из способов организации кода в приложениях.
Что такое MVP
MVP расшифровывается как Model — View — Presenter и разделяет логику приложения на три компонента:
🔴Model (Модель) — отвечает за данные и бизнес-логику. Она получает или сохраняет информацию, например, из API или локальной базы данных
🔴View (Представление) — пассивный слой, отображающий данные на экране. View не содержит логики — она лишь сообщает презентеру о действиях пользователя и отображает то, что пришло от него
🔴Presenter (Презентер) — посредник между моделью и представлением. Он обрабатывает пользовательские действия, запрашивает данные из модели, форматирует их и передает обратно в View
Поток коммуникации
➡️Пользователь взаимодействует с View (например, нажимает кнопку)
➡️View передает событие презентеру
➡️Презентер запрашивает или обновляет данные в модели
➡️Получив данные, презентер подготавливает их и отправляет обратно во View для отображения
View — самый поверхностный слой, он работает только с презентером, не зная ничего о модели напрямую. Это облегчает тестирование и делает код более модульным.
Пример
Представим экран входа в приложение:
🔸View: показывает два текстовых поля (логин и пароль) и кнопку «Войти». Передает ввод пользователю презентеру при нажатии на кнопку
🔸Presenter: получает логин и пароль, проверяет их (например, что они не пустые), отправляет их в модель
🔸Model: выполняет запрос к серверу, возвращает результат (успешный вход или ошибка)
🔸Presenter: получает результат, сообщает View показать следующий экран или отобразить сообщение об ошибке
Почему это удобно?
🔴Презентер содержит бизнес-логику и отделен от UI
🔴View можно переиспользовать или подменять, не затрагивая логику
🔴Легко писать юнит-тесты, особенно для презентера и модели
🔴Каждый View связан с одним презентером (но при необходимости может использовать несколько)
На блок-схеме можно посмотреть, как компоненты взаимодействуют между собой⬆️
Post #163
602

- 🔥 6
- ❤ 2
- 👎 1