CodeBlanks Logo Icon CodeBlanks

single ve factory

single ve factory ile bağlam türlerini öğrenirsin.

single ve factory

single ve factory, Koin'de bağımlılığın yaşam süresini belirleyen iki tanımdır. single tek örnek, factory her seferinde yeni örnek verir.

Örnek: single { Repository() } tüm uygulama boyunca aynı Repository örneğini döndürür. factory { Service() } her çağrıda yeni bir Service oluşturur. single durum bilgisi olan nesneler için uygundur; factory hafif ve bağımsız nesneler için. Yanlış seçim bellek sızıntısına ya da gereksiz yeniden oluşturmaya yol açar.

Ne zaman single, ne zaman factory?

Bir bağımlılık durum bilgisi tutuyorsa ve uygulama boyunca paylaşılacaksa single seçilir. Örn. veritabanı bağlantısı, oturum bilgisi.

Hafif, bağımsız ve kısa ömürlü nesneler için factory uygundur. Örn. her istekte yeni bir view model, her tıklamada yeni bir istek nesnesi. single yanlış kullanılırsa bağımlılıklar birbirini etkileyebilir; factory yanlış kullanılırsa gereksiz bellek yükü doğar. Karar verirken bağımlılığın doğasına bakılır.

Uygulama single ile Repository tanımla

val appModule = module { single { Repository() } } tanımla. Ayrıca class Repository tanımla. main içinde println("Single hazır") yazdır.

Başlangıç kodu

Main.kt
// single ve factory
// buraya yaz
import org.koin.dsl.module

fun main() {
    
}

Örnek çözüm

Main.kt
class Repository

val appModule = module {
    single { Repository() }
}

fun main() {
    println("Single hazır")
}

Beklenen çıktı

Single hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 single ve factory eşle

Kavram Anlamı
single Tek örnek
factory Her seferinde yeni
module Bağımlılık bloğu
get Başka bağımlılık

2 Veritabanı bağlantısı için hangisi uygundur?

  • factory
  • single Doğru cevap
  • neither
  • both

Açıklama: Veritabanı bağlantısı single ile tek örnek olur.

3 single çağrısını tamamla

Soru
val appModule = module {
    ____ { Repository() }
}
Cevap
val appModule = module {
    single { Repository() }
}

Açıklama: single ile tek örnek tanımlanır.

İleri seviye bölümündeki tüm dersler