Sobes.tech
Junior — Middle

Bog'liq bo'lsa, tarjima qilinmagan.

sobes.tech AI

AIdan javob

Dependency injection kontekstida (masalan, Androidda Dagger) @Provides va @Binds anotatsiyalari turli maqsadlar uchun xizmat qiladi, garchi ikkalasi ham bog'liqliklarni ta'minlash uchun ishlatiladi.

  • @Provides metodlar uchun ishlatiladi, ular aniq ob'ekt nusxasini yaratadi va qaytaradi. Odatda, bu metodning tanasi bo'lib, unda ob'ektni yaratish logikasini yozish mumkin.

  • @Binds interfeysni uning amalga oshirilishi bilan bog'lash uchun qo'llaniladi, yangi nusxa yaratmasdan. @Binds bilan belgilangan metod abstrakt bo'lishi kerak va faqat parametr sifatida uzatilgan interfeys amalga oshirilishini qaytarishi kerak.

Misol:

@Module
abstract class NetworkModule {
    @Binds
    abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}

@Module
class DatabaseModule {
    @Provides
    fun provideDatabase(): Database {
        return DatabaseImpl()
    }
}

Shu sababli, @Binds faqat aniq bir klass tomonidan amalga oshirilishini ko'rsatishda samaraliroq va oddiyroq, @Provides esa ob'ektni yaratish logikasi kerak bo'lsa ishlatiladi.