какой подход считается более правильным?
Есть одна проблема. Несколько операций необходимо выполнять одновременно. Пример кэширования: извлечение из Интернета, затем локальное сохранение в базе данных. Эти операции взаимосвязаны. сохранение использует выборку в результат.
Где и как должно происходить слияние этих двух операций?
1. в репо, т.е. репо будет иметь как локальные, так и удаленные источники данных (DataSource). Repo сначала вызовет функцию удаленного источника, которая извлекает информацию из Интернета, а затем результат будет передан в локальную функцию.
2. в useCase должна произойти композиция, т.е. fetchUseCase должна быть перенесена в usecase и должна быть создана составная cacheUseCase, которая будет зависеть от вышеупомянутых 2 UseCase.
3. Будет создана CacheUseCase, и в рамках этой usecase сначала будет вызвана get, а затем сохранение, которое будет использовать результат get. Таким образом, будет комбинация двух функций репо.
4. Формируются отдельные useCase-s fetch и save, и оба вызываются последовательно в ViewModel, т.е. слипание происходит в ViewModel.
Если мы можем говорить о плюсах и минусах каждого подхода. Что использовать и когда.
1) лучше сюда @android_architecture 2) юзкейс это бизнес логика, а кеширование никак к ней не относится. откуда брать данные и что с ними делать - задача репозитория, поэтому имхо лучше всего эту логику кеширования реализовать в репе getItems условно сначала берет из сетки, отдает, а потом кеширует. или получает инфу о сети и решает, сходить в сеть или отдать кеш
а плодить юзкейсы ради юзкейсов или отдельные классы ради 2-5 строк кода - ну такое, сложнее будет разобраться в будущем
Ого, даже мой наставник из гиков тут) Спасибо тебе за наставления)
пиши модель, не надо всё скидывать во "вьюмодель"
Обсуждают сегодня