понял что есть юзкейсы
у меня в проекте сейчас работа с репозиториями, промежуточными данными и т.п ведется во вьюмодел, что то типа такого:
class SomeViewModel() : ViewModel() {
@Inject
lateinit var someRepository: SomeRepository
fun getSomething(filter: Int): LiveData<Something> {
return someRepository.getSomethingFlow().filter { it.field > filter }.asLiveData(Dispatchers.IO)
}
fun doThis(someParam: String) {
someRepository.doThat(someParam).also { log(someParam) }
}
}
Правильно ли я понимаю, что юзкейсы по клину - это как раз вся эта логика, вынесенная в отдельные классы? Т.е. должно быть вот так:
class SomeViewModel() : ViewModel() {
@Inject
lateinit var getSomethingFilteredUseCase: GetSomethingFilteredUseCase
@Inject
lateinit var doThisUseCase: DoThisUseCase
fun getSomething(filter: Int): LiveData<Something> {
return getSomethingFilteredUseCase.execute(filter)
}
fun doThis(someParam: String) {
doThisUseCase.execute(someParam)
}
}
давайте скринами. Это плохо читается
или давайте объясню на пальцах. Есть Domain(UseCase) и есть Presentation(ViewModel) ViewModel это слепок состояния (+форматирование для человека) UseCase. Для того, чтобы его можно было безболезненно менять и потом отменить
Кинул в гист, надеюсь так получше будет https://gist.github.com/nevdokimof/e70d288b02aa953d09000fe69a504673
ох. Так конечно можно сделать, но Вы потонете в классах. Объедините в один UseCase
ага, т.е. выносим логику в юзкейсы, в presentation оставляем только вызов методов юзкейсов + форматирование/разбиение/етц вернувшихся данных/результата при необходимости?
Обсуждают сегодня