Skip to content

Latest commit

 

History

History
64 lines (43 loc) · 3.19 KB

README.md

File metadata and controls

64 lines (43 loc) · 3.19 KB

Архитектура MVVM (Model-View-ViewModel)


MVVM — это архитектурный паттерн, который разделяет приложение на три основных компонента:

  • Model/Repository — отвечает за данные и бизнес-логику.
  • View — отвечает за отображение данных и взаимодействие с пользователем.
  • ViewModel — выступает посредником между Model и View, предоставляет данные для View и обрабатывает пользовательские действия.

Зачем нужен MVVM?

  • Разделение ответственностей: Каждый компонент отвечает за свою часть, что упрощает поддержку и тестирование.
  • Упрощение тестирования: ViewModel и Model можно тестировать отдельно от View.
  • Жизненный цикл: ViewModel сохраняет данные при повороте экрана, что улучшает пользовательский опыт.

Компоненты MVVM

Model

  • Отвечает за данные и бизнес-логику.
  • Может включать:
    • Работу с сетью (Retrofit, OkHttp).
    • Работу с базой данных (Room).
    • Логику обработки данных.

View

  • Отвечает за отображение данных и взаимодействие с пользователем.
  • Обычно это Activity, Fragment или ComposableJetpack Compose).
  • View не должна содержать бизнес-логику.

ViewModel

  • Выступает посредником между Model и View.
  • Обрабатывает пользовательские действия и работает с State машиной.
  • Отвечает за подготовку данных для View.
  • Не знает о существовании View (что делает код более тестируемым).
  • Использует LiveData или StateFlow для передачи данных в View.

viewModelScope - удобное управление жизненным циклом для сохранения данных.

  • Разделение ответственности
  • Отдельное тестирование модулей

Как работает MVVM?

  1. View запрашивает данные у ViewModel.
  2. ViewModel получает данные из Model.
  3. ViewModel передает данные в View с помощью LiveData или StateFlow.
  4. View отображает данные пользователю.
  5. При взаимодействии пользователя (например, нажатие кнопки), View сообщает об этом ViewModel.
  6. ViewModel обрабатывает действие и обновляет данные.