В настоящее время мы проводим рефакторинг базы 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?