
MVC - это чистый подход в Android, который откладывает виды от контроллера. Контроллер несет ответственность только за обновление моделей, после того, как модель обновляется, она может уведомить представления, а затем представление может быть обновлено с помощью правильных обратных вызовов. Традиционный MVC - это то, где есть
Модель : действует как модель для данных
Просмотр : имеет дело с представлением пользователя, который может быть пользовательским интерфейсом
Контроллер : управляет взаимодействием между моделью и представлением, где просмотр вызывает контроллер для обновления модели. Представление может вызвать несколько контроллеров, если это необходимо.
Некоторые недостатки MVC можно преодолеть с помощью подхода MVP. Докладчик в MVP содержит всю бизнес -логику, и этот класс находится далеко от контекста Android или зависимостей, связанных с Android, которая обеспечивает гибкость для текстовой бизнес -логики, просто используя класс докладчиков в тестовых модулях. Зависимости, связанные с андроидом, создают сложность в тестировании. У докладчика нет никакой зависимости от андроида, например, контекста, просмотра и т. Д., И все обновления модели и сетевые запросы выполняются через докладчика. Как только модель обновляется или завершается сетевой запрос, представление обновляется через докладчика, используя обратные вызовы для просмотра от докладчика. Ни один модель и сетевой запрос не может напрямую подходить к представлениям.
MVVM включает в себя подход привязки данных для сокращения кода и сокращения кода обработки представления из классов Java. Модели просмотра отвечают за обновление просмотра, и после того, как модель представления привязана к представлению, просмотр Get Get об их событиях обновления. Если модель обновляется пользователем, нажимая, то модель Отправить обратные вызовы, чтобы просмотреть модель, которая автоматически обновляет представление, когда он привязан к представлениям. MVVM уменьшает размер кода, но реализация MVVM довольно сложная, и трудно отлаживать крупные проекты на основе MVVM.


?
Выбор правильной архитектуры для проекта включает в себя понимание модулей, которые необходимо разработать. Некоторые функциональные возможности отлично работают на MVC, некоторые с MVP, а некоторые с MVVM. Довольно сложно отлаживать проекты, сделанные на MVVM, особенно те, которые не имеют одностороннего потока данных из -за привязки данных и живых данных. Если приложение получает непрерывный поток данных от источника, требует регулярного пользовательского интерфейса и имеет в основном (80–90%) одностороннюю связь (например, электронные устройства, отправляющие журналы в приложение для Android), такие как приложения для солнечных ячейков, приложения для инверторов или любое другое мониторинг статуса устройства, которые могут хорошо работать с MVVM, из-за обновлений в реальном времени . Отладка этих приложений MVVM может быть простой, так как основной поток данных является односторонним .
MVP является хорошим подходом для написания проектов Android, когда мы обеспокоены тестированием тестирования Business Logic WRT с помощью тестирования Java Test Frameworks (не Android). Поскольку Java Test Framework будет разрешать только зависимости от Java, а уровень чистого докладчика не состоит из зависимостей, связанных с Android, таких как контекст, SharedPreferences или любой другой Com.Android. * упаковка. Недостаток MVP заключается в том, что он в конечном итоге написал 20-25% дополнительный код с той же функциональностью, написанной в MVC или MVVM. MVP хорош, если вы действительно заинтересованы в тестовых случаях и модульном тестировании модулей. Для MVP с помощью Java Test наборы просто сделайте экземпляр докладчика и запустите функции тестирования.
Например: новый докладчик (). testsomefunction () .
MVC является широко используемой техникой в Android. Сам Google писал репозитории в MVC в течение многих лет. В настоящее время Google принимает MVVM для его репозитории GitHub, так как эти репо являются небольшими и в основном образцах. Приложение MVC может быть протестировано через Android Test Frameworks, а не с помощью специфических для Java инструментов тестирования из -за отсутствия зависимостей com.android. * Пакеты в специфическом инструменте Java.
Пример :
Примечание : нет единой архитектуры, что лучше всего. Если бы он был, не было бы никакой необходимости изучать другие архитектуры. Выбор правильной архитектуры зависит от нескольких факторов, таких как начальные требования, поток данных, масштабируемость, обслуживание, обновления (CRS), требования к тестированию.
За исключением этих трех архитектур Android, есть еще одна архитектура, названная как «MVI - Model View Intent». Это не очень популярно среди разработчиков Android. Пожалуйста, проверьте эту ссылку, если вы заинтересованы в MVI .
https://github.com/saksham24/android-simple-mvi-pattern-with-mvp-mvvm-collaboration