TGViewer
Android Good Reads Android Good Reads @droidgr · 4.02K subscribers
Post #2134 3.59K
Замените UseCase на Интерфейсы

Нашел невероятно красивое решение, как слой usecase, являющихся прокси к репозиторию, облегчить.

Допустим у нас есть репозиторий:

class CounterRepository {
private val _value = StateFlow(0)
val value: Flow<Int> = _value

fun addOne() { _value.update { it + 1 } }
fun subOne() { _value.update { it - 1 } }
}


Тогда примитивные прокси usecase(представим их сразу как интерфейсы) будут выглядеть так:

interface AddUseCase { fun addOne() }

interface SubUseCase { fun subOne() }

interface GetValueUseCase {
val value: Flow<Int>
}


Значит, в целом, мы можем представить репозиторий, как реализацию этих интерфейсов:

class CounterRepository:
AddUseCase,
SubUseCase,
GetValueUseCase {
override val value: Flow<Int> ...

override fun addOne() ...
override fun subOne() ...
}


А раз есть реализация, значит можно инжектить ее напрямую в VM

class CountingViewModel(
private val addOne: AddOneUseCase,
private val subOne: SubUseCase,
private val getValue: GetValueUseCase,
): ViewModel() {
...
}


Пример целиком, но с большим количеством обслуживающего кода: Гист

Вроде бы использованы базовые паттерны, но такой реализации еще не видел
  • 👎 75
  • 🤣 11
  • 👍 9
  • 🔥 5
  • 🤯 5
  • 🌚 2
  • ❤ 1
More from @droidgr
  1. Sep 30, 2026🏗 Строим мультиагентные системы для разработки на Podlodka AI Crew Инженерные задачи редк…
  2. Aug 6, 2026Если вам всё ещё интересна мобильная разработка, рекомендую подписаться на канал Kotlin Ad…
  3. Aug 4, 2026Post #2504
  4. Jul 26, 2026Как я играю в экосистему продуктов Наиболее близка мне сейчас тема ухода за животными. Я м…
  5. Jul 26, 2026Привет! Как вы могли заметить, я более не помогаю вести данный канал. Если вам понравилось…
  6. Jun 10, 2026Немного про продуктивность без AI. Старый добрый помодоро таймер, но ужесточенный трекинго…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →