Sobes.tech
Junior — Middle

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. @Binds ile 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.