Bağımlılık enjeksiyonu veya modüler sistemler bağlamında Binds ve Provides mekanizması arasındaki fark nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bağımlılık enjeksiyonu bağlamında (örneğin, Android'de Dagger), @Provides ve @Binds anotasyonları farklı amaçlar için kullanılır, her ikisi de bağımlılıkları sağlamak için kullanılır.
-
@Provides, belirli bir nesne örneği oluşturan ve döndüren yöntemler için kullanılır. Genellikle, nesne oluşturma mantığını yazabileceğiniz gövdesi olan bir yöntemdir. -
@Binds, yeni bir örnek oluşturmadan bir arayüzü onun uygulamasıyla bağlamak için kullanılır.@Bindsile işaretlenmiş yöntem soyut olmalı ve parametre olarak geçirilen arayüz uygulamasını döndürmelidir.
Örnek:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Bu nedenle, @Binds sadece bir arayüzün belirli bir sınıf tarafından uygulandığını belirtmek için daha etkilidir ve basittir, @Provides ise nesne oluşturma mantığı gerektiğinde kullanılır.