#Architecture #MVVM #MVP
Различия между MVVM и остальными MV*-паттернами
Хорошая статья в рамках которой автор показал историю развития MV(Any) паттернов, так и различия между ними и ошибки в понимание.
Вы найдете информацию о:
👉 MVC (Model-View-Controller)
👉 MVP (Model-View-Presenter) в 2 вариациях
👉 Passive View
👉 Supervising Controller
👉Presentation Model
👉MVVM (Model-View-ViewModel)
Presentation Model описывает подход, который использует Google для архитектуры на основе Architecture Components в Android.
Помните самое главное - нет правильной архитектуры, есть только та, которая эффективно решит задачу вашего приложения, и возможно она вполне будет за рамками этого списка. Напишите о ней в @android_broadcast_discussions и я расскажу о ней в канале.
Различия между MVVM и остальными MV*-паттернами
Хорошая статья в рамках которой автор показал историю развития MV(Any) паттернов, так и различия между ними и ошибки в понимание.
Вы найдете информацию о:
👉 MVC (Model-View-Controller)
👉 MVP (Model-View-Presenter) в 2 вариациях
👉 Passive View
👉 Supervising Controller
👉Presentation Model
👉MVVM (Model-View-ViewModel)
Presentation Model описывает подход, который использует Google для архитектуры на основе Architecture Components в Android.
Помните самое главное - нет правильной архитектуры, есть только та, которая эффективно решит задачу вашего приложения, и возможно она вполне будет за рамками этого списка. Напишите о ней в @android_broadcast_discussions и я расскажу о ней в канале.
Habr
Различия между MVVM и остальными MV*-паттернами
От переводчика : Уже опубликовано много материалов по MVC и его производным паттернам, но каждый понимает их по-своему. На этой почве возникают разногласия и холивары. Даже опытные разработчики...
#ArchitectureComponents #MVVM #Architecture
"MVVM with architecture components: a step by step guideline for MVP lovers" by Antonio Leiva
Давным давно в мире Android до Google I/O 2017 в архитектуре Android приложений преимущественно использоваться паттерн MVP, но появление Architecture Component (Arch Comp) начало склонять часу весов в сторону MVVM.
Если вы хотите перейти с MVP на MVVP в вашем приложение, то вам поможет стать от Antonio Leiva, в которой он описал способ миграции на Arch Comp.
"MVVM with architecture components: a step by step guideline for MVP lovers" by Antonio Leiva
Давным давно в мире Android до Google I/O 2017 в архитектуре Android приложений преимущественно использоваться паттерн MVP, но появление Architecture Component (Arch Comp) начало склонять часу весов в сторону MVVM.
Если вы хотите перейти с MVP на MVVP в вашем приложение, то вам поможет стать от Antonio Leiva, в которой он описал способ миграции на Arch Comp.
Antonio Leiva
MVVM with architecture components: a guideline for MVP lovers
Ok, so now that MVVM is the standard to implement Android Apps since Google released their Guide to App architecture, I think it's time to provide some
#Architecture #ViewModel #MVVM #ArchComponents
MVVM — How View and ViewModel should communicate?
Выбор архитектуру - важный вопрос для любого проекта, но приняв это решение, надо понимать как эффективно реализовать его, чтобы получить все преимущества от.
На текущий момент очень популярным решением стало MVVM (Model-View-ViewModel). Рост спроса на эту архитектуру подкрепился тем, что разработчики из Google сделали готовые компоненты для удобной реализации этого подхода, что значительно упрощает задачу.
Замечание: классический MVVM, описанный в Microsoft, отличается от того что обычно применяется в Android
Чтобы сделать MVVM качественно надо придерживаться нескольких правил:
👉 У каждого компонента есть четкая роль:
👉
👉 Когда происходит клик или прочие события на UI,
👉
👉 При модификации данных в
👉 ViewModel может предоставлять дополнительные методы для View. В случаях когда у вас много логики в
Следование правилам, описанным выше, позволит вам:
👉 реализовать эффективную архитектуру в Android
👉 не иметь проблем с жизненным циклом
👉 не думать о сохранение данных при повороте экрана
👉 позволит покрыть логику Unit тестами
👉 упростит расширение функционала в будущем
MVVM — How View and ViewModel should communicate?
Выбор архитектуру - важный вопрос для любого проекта, но приняв это решение, надо понимать как эффективно реализовать его, чтобы получить все преимущества от.
На текущий момент очень популярным решением стало MVVM (Model-View-ViewModel). Рост спроса на эту архитектуру подкрепился тем, что разработчики из Google сделали готовые компоненты для удобной реализации этого подхода, что значительно упрощает задачу.
Замечание: классический MVVM, описанный в Microsoft, отличается от того что обычно применяется в Android
Чтобы сделать MVVM качественно надо придерживаться нескольких правил:
👉 У каждого компонента есть четкая роль:
View
отвечает за отображение данных, VM
- предоставляет данные, которые отобразятся на View
и обрабатывает события, связанные с данными в ней👉
VM
содержит только логику. Он не должен содержать никаких классов из Android SDK, все платформенное API должно предоставляться через абстракции в виде интерфейсов.👉 Когда происходит клик или прочие события на UI,
View
только сообщается VM
о произошедшем событие (простым вызовом метода в VM
) и не выполняет какой-либо логики👉
VM
не знает ничего о View
👉 При модификации данных в
VM
они сразу же должны отображаться в View
. Эффективный способ достичь этого - использовать LiveData. Это позволяет организовать push взаимодействие между VM
и View
, что дает мгновенное отображение любых изменений в данных на экране.👉 ViewModel может предоставлять дополнительные методы для View. В случаях когда у вас много логики в
VM
можно вынести ее в отдельный класс - Presenter
, который служит медиатором между VM
. В таком случае VM
будет служить чистым контейнером состояния View
.Следование правилам, описанным выше, позволит вам:
👉 реализовать эффективную архитектуру в Android
👉 не иметь проблем с жизненным циклом
👉 не думать о сохранение данных при повороте экрана
👉 позволит покрыть логику Unit тестами
👉 упростит расширение функционала в будущем
#MVVM #Architecture #BestPractices #ArchComponents
Our Way to MVVMI and Mistakes We Made When Implementing MVVM
Лучше учиться на ошибках других. Поэтому запомните из боли разработчиков их опыт интеграции и примите следующий правила (что НЕ стоит делать) при работе с MVVM на основе Arch Components:
⛔ Передавать LiveData в качестве параметра в репозиторий и обновлять его там
⛔ Комбинировать бизнес логику и логику представления в ViewModel
⛔ Полагаться только на ViewModel для сохранения состояния между пересозданием Activity/Fragment
⛔ Не сбрасывать слушатели Repository, когда уничтожается View
⛔ Получать данные из ViewModel в View с помощь getter, а не реагировать на изменение данных через LiveData
Our Way to MVVMI and Mistakes We Made When Implementing MVVM
Лучше учиться на ошибках других. Поэтому запомните из боли разработчиков их опыт интеграции и примите следующий правила (что НЕ стоит делать) при работе с MVVM на основе Arch Components:
⛔ Передавать LiveData в качестве параметра в репозиторий и обновлять его там
⛔ Комбинировать бизнес логику и логику представления в ViewModel
⛔ Полагаться только на ViewModel для сохранения состояния между пересозданием Activity/Fragment
⛔ Не сбрасывать слушатели Repository, когда уничтожается View
⛔ Получать данные из ViewModel в View с помощь getter, а не реагировать на изменение данных через LiveData
Medium
Our Way to MVVMI and Mistakes We Made When Implementing MVVM
My story on this project started with the management’s decision of refactoring it as developers had hit the wall with “God” Activities…
#MVVM #Architecture
Our approach to modularization and MVVM
Рассказ об подходе к архитектуре приложения на основе MVVM и модуляризации приложения
Our approach to modularization and MVVM
Рассказ об подходе к архитектуре приложения на основе MVVM и модуляризации приложения
Medium
Our approach to modularization and MVVM
In the past, maintainability of Android applications was quite a headache because activities, fragments and views were tightly coupled…
#MVVM #AppArchitecture #ArchitectureComponents
Android MVVM — Do’s and Don’ts
Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉
👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это
👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от
Android MVVM — Do’s and Don’ts
Несколько рекомендаций при реализации архитектуры MVVM на основе Architecture Components:
👉
ViewModel
не должна использовать классы из Android SDK. Используйте интерфейсы, которые позволят вам абстрагироваться от платформенной реализации.👉 View не должна содержать какой либо логики (быть пассивной). Место для всей логики - это
ViewModel
.👉 ViewModel не должна иметь ссылки на View
👉 Если вы хотите получать обновления данных от
LiveData
для обновления UI, тогда используйте viewLifecycleOwner.Medium
MVVM Do’s and Don’ts
Some ground rules to follow while using MVVM Architecture.
#Architecture #ArchitectureComponents #AndroidX #MVVM
С появлением Architecture Components в Android реализация MVVM на основе этих компонентов стала очень популярна. Я и сам выбираю такое решение в связи с тем, что она имеет множество позитивных моментов:
👉 Решение популярных задач в архитектуре Android приложений
👉 Хорошая документация: статьи, видео, примеры и Codelab-ы
👉 Интеграция с инструментарием для разработки
👉 Поддержка от Google
👉 Большинство разработчиков знают как ее реализовывать и это способ единообразен из-за одного источника правды (Google). Это уменьшает время на обучение стажеров и интеграцию новых людей + между проектами становится общий стандарт
👉 Интеграция между различными библиотеками из Architecture Component так и сторонними (RxJava, Kotlin Coroutines)
Я не считаю ее идеалом, но Arch Components значительно упрощают создание приложений на Android и дает взгляд на архитектуру приложений от создателя Android SDK.
С появлением Architecture Components в Android реализация MVVM на основе этих компонентов стала очень популярна. Я и сам выбираю такое решение в связи с тем, что она имеет множество позитивных моментов:
👉 Решение популярных задач в архитектуре Android приложений
👉 Хорошая документация: статьи, видео, примеры и Codelab-ы
👉 Интеграция с инструментарием для разработки
👉 Поддержка от Google
👉 Большинство разработчиков знают как ее реализовывать и это способ единообразен из-за одного источника правды (Google). Это уменьшает время на обучение стажеров и интеграцию новых людей + между проектами становится общий стандарт
👉 Интеграция между различными библиотеками из Architecture Component так и сторонними (RxJava, Kotlin Coroutines)
Я не считаю ее идеалом, но Arch Components значительно упрощают создание приложений на Android и дает взгляд на архитектуру приложений от создателя Android SDK.
#architecture #mvi #mvvm
The famous and unthought MVI "misconception" in Android, alongside MVVM (11 мин)
Автор проходится танком по Jetpack MVVM из Architecture Components. Тезисы:
👉 Android MVVM - это MVC
👉 ViewModel - это Presenter
👉 MVI - не является серебряной пулей
The famous and unthought MVI "misconception" in Android, alongside MVVM (11 мин)
Автор проходится танком по Jetpack MVVM из Architecture Components. Тезисы:
👉 Android MVVM - это MVC
👉 ViewModel - это Presenter
👉 MVI - не является серебряной пулей