Skip to content

Latest commit

 

History

History
66 lines (48 loc) · 10.8 KB

File metadata and controls

66 lines (48 loc) · 10.8 KB

Android Архитектура

  • Что такое архитектура, когда она нужна и когда нет?

    Архитектура программного обеспечения — это фундаментальная структура системы, описывающая её компоненты, их взаимодействия и связи с окружением. Архитектура нужна для обеспечения масштабируемости, удобства поддержки и разработки, а также повышения эффективности работы команды. Архитектура может не требоваться для очень маленьких или прототипных проектов, где основной целью является быстрая проверка идеи, но даже в таких случаях минимальное планирование архитектуры может сэкономить время на последующих этапах.

  • Архитектура вашего последнего приложения

  • Если бы перед вами стояла задача написать приложение-будильник, с какими проблемами бы вы столкнулись?

    • Точность таймеров и будильников: Необходимо обеспечить точное срабатывание будильника в установленное время, что может быть затруднено спящим режимом устройства.
    • Работа в фоне: Сохранение работоспособности приложения в фоновом режиме, особенно на новых версиях Android с ограниченными возможностями фоновой работы.
    • Энергопотребление: Оптимизация использования батареи приложением, особенно важно для будильников, которые должны работать всю ночь.
    • Взаимодействие с пользователем: Создание удобного пользовательского интерфейса для управления множеством будильников, выбора мелодий, настройки громкости и вибрации.
    • Поведение в разных часовых поясах: Учет смены часовых поясов пользователем, что может повлиять на срабатывание будильника.
    • Разрешения и доступ к системным настройкам: Получение необходимых разрешений для запуска мелодии, вибрации и изменения системных настроек.
  • Описание MVC

MVC

  • Описание MVP

    • Model также представляет бизнес-логику и данные.
    • View отображает данные и отправляет действия пользователя в Presenter. В отличие от MVVM, View здесь может быть более "умной", например, имея непосредственное знание о своем Presenter.
    • Presenter действует как посредник между View и Model, обрабатывая всю логику представления, но в отличие от ViewModel, Presenter напрямую обновляет View, обеспечивая более тесную связь между этими компонентами.

MVP можно запомнить через Presenter, который напрямую взаимодействует с View, обновляя её и реагируя на действия пользователя, подчеркивая тесную связь между ними.

MVVM

  • Описание MVVM

    MVVM (Model-View-ViewModel) - это архитектурный паттерн, используемый в разработке программного обеспечения для упрощения разработки пользовательских интерфейсов. Он разделяет программу на три основных компонента:

    • Model представляет собой бизнес-логику и данные. Это могут быть классы для работы с базой данных, сетевые запросы и т.д.
    • View отображает данные (UI пользователя) и перенаправляет действия пользователя в ViewModel.
    • ViewModel является посредником между View и Model. Она обрабатывает все логику представления и реакции на действия пользователя, но не имеет прямого доступа к компонентам интерфейса.

MVVM можно ассоциировать с ViewModel, который является ключевым компонентом, делая акцент на автоматическом связывании данных между View и Model через наблюдаемые объекты.

MVVM

  • Описание MVI

    MVI (Model-View-Intent) - это архитектурный паттерн, в котором Intent обозначает намерение изменить состояние приложения. Этот подход поощряет приложения работать в более реактивном стиле.

    • Model содержит состояние приложения. Оно реактивно и изменяется в ответ на Intent'ы.
    • View отображает состояние Model и отправляет Intent'ы, которые представляют действия пользователя.
    • Intent является уникальной особенностью MVI и представляет собой действия пользователя, которые изменяют состояние Model. Это создает однонаправленный поток данных, где View отправляет Intent'ы, которые изменяют Model, а новое состояние Model отображается в View.

MVI можно запомнить через Intent — уникальную концепцию этого паттерна, подчеркивая однонаправленный поток данных и реактивное обновление состояния приложения.

MVVM

  • MVC vs MVP vs MVVM vs MVI

    Архитектурные паттерны MVC (Model-View-Controller), MVP (Model-View-Presenter), MVVM (Model-View-ViewModel) и MVI (Model-View-Intent) широко используются в разработке программного обеспечения для структурирования и организации кода. Каждый из этих паттернов имеет свои преимущества и недостатки, а их применение зависит от конкретных требований проекта, используемых технологий и предпочтений команды разработчиков.

    ...

  • Чистая Архитектура

    Clean Architecture — это концепция архитектуры программного обеспечения, разработанная Робертом Мартином (Uncle Bob), которая направлена на создание программного обеспечения, которое легко тестировать, поддерживать и развивать благодаря четкому разделению кода на слои с определенными задачами. Применение Clean Architecture в разработке приложений для Android помогает решить многие проблемы, связанные с жизненным циклом приложения, зависимостями между компонентами и сложностью поддержки кода при его расширении.

    • Presentation Layer (Презентационный слой): Включает в себя компоненты пользовательского интерфейса, такие как Activity, Fragment и ViewModel в контексте Android. Задача этого слоя — отображение данных пользователю и обработка пользовательского ввода.
    • Domain Layer (Доменный слой): Является ядром приложения, содержит бизнес-логику (entities и use cases). Use Cases (или Interactors) описывают конкретные действия или бизнес-операции, которые могут быть выполнены в приложении. Entities представляют собой основные бизнес-модели. Этот слой не зависит от других слоев и определяет правила и случаи использования, специфичные для предметной области приложения.
    • Data Layer (Слой данных): Отвечает за доступ к данным, будь то локальное хранилище (например, база данных SQLite) или внешние источники данных (например, веб-сервисы). Слой данных включает в себя репозитории, которые абстрагируют источники данных от остальной части приложения, предоставляя данные для доменного слоя.
      Принципы Clean Architecture обеспечивают, что каждый слой зависит только от внутренних слоев, а не от внешних. Это означает, что изменения в одном слое минимально влияют на другие слои, что упрощает тестирование и обновление приложения.

MVVM