Android Domain Driven Design - лучшая реализация - PullRequest
0 голосов
/ 11 июля 2019

В настоящее время мы проводим рефакторинг базы Android-проектов на основе MVP, проблема в том, что у нас есть 2 подхода на основе MVVM + ViewModel + LiveData

Оба подхода имеют следующую архитектуру:

Пожалуйста, проверьте следующее изображение: https://drive.google.com/open?id=1dk1nInTNW5S1Pf26JhpN9f4wpV-bNud0

У нас есть сценарий входа, когда пользователь нажимает кнопку входа в систему, представление вызывает кнопку входа в ViewModel, ViewModel запускает функцию входа в классе UseCase.

Разница между этими двумя подходами заключается в ответной части:

Подход 1: Поскольку мы используем сопрограммы и приостановленные функции, функция входа в класс UseCase будет приостановлена ​​и вернет ответ обратно ViewModel, который будет отвечать за навигацию и попросит View перейти на главную страницу.

Подход 2: Функция входа в класс UseCase будет приостановленной функцией void. Как только класс UseCase получит ответ, он попросит ViewModel либо показать сообщение об ошибке, либо перейти на следующую страницу.

Вопрос в том, где мы должны хранить состояние приложения? в случае использования или ViewModel? Какой класс отвечает за навигацию по DDD?

...