Механизми Binds ва Provides дар контексти injection-и dependency ё системҳои модулӣ чӣ фарқият доранд?
sobes.tech AI
Ҷавоб аз AI
Дар контексти иҳотаи вобастагӣ (масалан, Dagger дар Android) аннотацияҳои @Provides ва @Binds барои мақсадҳои гуногун хизмат мекунанд, ҳарчанд ҳарду барои таъмин намудани вобастагиро истифода мебаранд.
-
@Providesбарои методҳо истифода мешавад, ки намунаи мушаххасро месозанд ва баргардонанд. Одатан, ин як метод бо бадан аст, ки дар он логикаи сохтани объект навиштан мумкин аст. -
@Bindsбарои пайваст кардани интерфейс бо иҷроияаш бидуни сохтани намунаи нав истифода мешавад. Метод бо@Bindsбояд абстрактӣ бошад ва танҳо иҷроияро, ки ҳамчун параметр дода шудааст, баргардонад.
Масал:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Аз ин рӯ, @Binds самараноктар ва соддатар аст, вақте ки танҳо нишон додан лозим аст, ки интерфейс аз ҷониби синфи мушаххас иҷро мешавад, дар ҳоле ки @Provides вақте истифода мешавад, ки логикаи сохтани объект зарур аст.