Middle
Neden @Provides yerine @Binds anotasyonunu kullanmalıyız?
sobes.tech yapay zeka
AI'dan gelen yanıt
@Binds anotasyonu, Dagger'a hangi belirli arayüz uygulamasının, arayüz kendisi talep edildiğinde sağlanması gerektiğini belirtmek için kullanılır.
Bu durumda @Binds kullanmanın @Provides yerine avantajları şunlardır:
- Performans:
@Bindsdaha verimlidir, çünkü Dagger daha az kod üretir. Sadece arayüzü belirli bir türe bağlar, yeni bir modül örneği oluşturmaz. - Okunabilirlik: Kod daha okunaklı hale gelir, çünkü hangi sınıfın hangi arayüzü uyguladığı açıkça görülür.
- Boilerplate kodun azaltılması:
@Bindskullanırken, sadece uygulamayı döndüren ek bir@Providesyöntemi yazmaya gerek yoktur.
Örnek:
Yerine:
@Module
abstract class MyModule { // Modül soyut olmalı
@Binds
abstract fun bindMyInterface(implementation: MyInterfaceImpl): MyInterface; // Yöntem soyut olmalı
}
interface MyInterface {
// ...
}
class MyInterfaceImpl : MyInterface {
// ...
}
@Provides anotasyonu, arayüz uygulamaları olmayan veya daha karmaşık nesne oluşturma mantığı gerektiren nesneleri sağlamak için gerekli olmaya devam eder (örneğin, yapıcılar aracılığıyla nesne oluşturma, harici kütüphanelerden nesneler sağlama, yapıcıyla enjekte edilemeyen bağımlılıkları sağlama).