TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #163 602
Привет, это Катя, 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 связан с одним презентером (но при необходимости может использовать несколько)

На блок-схеме можно посмотреть, как компоненты взаимодействуют между собой⬆️
  • 🔥 6
  • ❤ 2
  • 👎 1
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →