Asılılıq injeksiyası və ya modul sistemləri kontekstində Binds və Provides mexanizmləri arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıq injektsiyası kontekstində (məsələn, Android-də Dagger) @Provides və @Binds annotasiyaları müxtəlif məqsədlər üçün istifadə olunur, baxmayaraq ki, hər ikisi asılılıqları təmin etmək üçün istifadə olunur.
-
@Providesobyektin konkret nümunəsini yaradan və geri qaytaran metodlar üçün istifadə olunur. Adətən, bu, obyektin yaradılması loqikasını yaza biləcəyiniz bədənə malik bir metoddur. -
@Bindsinterfeysi onun tətbiqi ilə əlaqələndirmək üçün istifadə olunur və yeni nümunə yaratmadan.@Bindsilə işarələnmiş metod abstrakt olmalı və sadəcə olaraq ötürülən interfeys tətbiqini geri qaytarmalıdır.
Nümunə:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Beləliklə, @Binds daha səmərəli və sadədir, sadəcə interfeysin konkret sinif tərəfindən həyata keçirildiyini göstərmək istəyirsinizsə, @Provides isə obyektin yaradılması loqikası lazım olduqda istifadə olunur.