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