Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 6 / 14 Koin priklausomybių injekcija ~45 min

Sukurk CoreModule.kt — tinklo grafas viename modulyje

Kodo stulpelyje — core/di/CoreModule.kt. Tai tas pats tinklas, kurį 5 pamokoje statei rankomis (object Network), tik dabar aprašytas kaip Koin receptai. single<Retrofit> naudoja get<Json>() — Koin pats paduoda anksčiau aprašytą Json. single<PicaApi> prašo get<Retrofit>(). Grafas surenkamas pats.

Dabar — funkcijų moduliai. Kiekviena funkcija (menu, cart) turi savo modulį šalia savo kodo.

// feature/menu/di/MenuModule.kt
val menuModule = module {
    single { MenuRepository(get()) }      // get() = PicaApi (iš coreModule)
    viewModel { MenuViewModel(get()) }    // get() = MenuRepository
}
// feature/cart/di/CartModule.kt — krepšelis kol kas tas pats „in-memory" MVI iš 3 pamokos
val cartModule = module {
    viewModel { CartViewModel() }         // priklausomybių dar neturi;
                                          // OrderRepository/TableSession prisidės 9/10 pamokose
}

Atkreipk dėmesį: MenuViewModel nepasikeitė — jis kaip ir anksčiau priima MenuRepository konstruktoriuje. Pasikeitė tik tai, kas jį pastato: nebe tu ranka, o Koinas per get().

Patarimas. single vs factory: Retrofit, PicaApi, repozitorijos — tegul būna single (viena kopija visai programai; brangu kurti iš naujo). ViewModel visada viewModel { } — jį valdo ekrano gyvavimo ciklas.