#android #архитектура
В каких случаях Domain слой (бизнес-логика) может знать о существовании разных источников данных? Например, у меня есть такой код: GetUserUseCase { UserRepository userRepository; GetUserUseCase(UserRepository userRepository) { //... } public ObservblegetUser(int id) { return Observable.merge(userRepository.getLocal(id), userRepository.getRemote(id)); } } т.е. мой репозиторий может отдавать данные из двух источников. Насколько это корректно с точки зрения "Чистой архитектуры"? Это простой пример, у меня есть более сложные кейсы, когда мне необходимо точно знать из какого источника получены эти данные. Должен ли я пересмотреть свою архитектуру таким образом, чтобы UseCase не знал о разных источниках, т.е. у меня в репозитории был бы один метод getUser(), или это нормальная ситуация?
Ответы
Ответ 1
Зависит от требований к приложению, глобально есть два подхода: 1) Умный репозиторий Тогда это на уровне репозитория, а интерактор только просит данные. То есть бизнес логика без понятия откуда и как получены данные. А репозиторий управляет всеми кешами. 2) Глупый репозиторий Репозиторий только знает как достать и как сохранить данные, а интерактор сам говорит откуда и когда. А также именно интерактор решает когда сохранять, очищать данные и так далее Обычно на практике более прост первый подход, так как пользователю и логике приложения не известно про локальные кеши и прочее.
Комментариев нет:
Отправить комментарий