Dependency injection же модулдук системалар контекстинде Binds жана Provides механизминин айырмасы эмнеде?
sobes.tech AI
AIден жооп
Талдоо контекстинде (мисалы, Androidда Dagger менен) @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 объект түзүү логикасы керек болгондо колдонулат.