169 похожих чатов

Всем привет. У меня есть вопрос по чистой архитектуре. Интересно,

какой подход считается более правильным?

Есть одна проблема. Несколько операций необходимо выполнять одновременно. Пример кэширования: извлечение из Интернета, затем локальное сохранение в базе данных. Эти операции взаимосвязаны. сохранение использует выборку в результат.
Где и как должно происходить слияние этих двух операций?

1. в репо, т.е. репо будет иметь как локальные, так и удаленные источники данных (DataSource). Repo сначала вызовет функцию удаленного источника, которая извлекает информацию из Интернета, а затем результат будет передан в локальную функцию.

2. в useCase должна произойти композиция, т.е. fetchUseCase должна быть перенесена в usecase и должна быть создана составная cacheUseCase, которая будет зависеть от вышеупомянутых 2 UseCase.

3. Будет создана CacheUseCase, и в рамках этой usecase сначала будет вызвана get, а затем сохранение, которое будет использовать результат get. Таким образом, будет комбинация двух функций репо.

4. Формируются отдельные useCase-s fetch и save, и оба вызываются последовательно в ViewModel, т.е. слипание происходит в ViewModel.

Если мы можем говорить о плюсах и минусах каждого подхода. Что использовать и когда.

4 ответов

17 просмотров

1) лучше сюда @android_architecture 2) юзкейс это бизнес логика, а кеширование никак к ней не относится. откуда брать данные и что с ними делать - задача репозитория, поэтому имхо лучше всего эту логику кеширования реализовать в репе getItems условно сначала берет из сетки, отдает, а потом кеширует. или получает инфу о сети и решает, сходить в сеть или отдать кеш

Тимур
1) лучше сюда @android_architecture 2) юзкейс это ...

а плодить юзкейсы ради юзкейсов или отдельные классы ради 2-5 строк кода - ну такое, сложнее будет разобраться в будущем

Ого, даже мой наставник из гиков тут) Спасибо тебе за наставления)

пиши модель, не надо всё скидывать во "вьюмодель"

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта