Wat is het verschil tussen het mechanisme Binds en Provides in de context van dependency injection of modulaire systemen?
sobes.tech AI
Antwoord van AI
In de context van dependency injection (bijvoorbeeld Dagger in Android) dienen de annotaties @Provides en @Binds voor verschillende doeleinden, hoewel beide worden gebruikt om afhankelijkheden te leveren.
-
@Provideswordt gebruikt voor methoden die een concreet exemplaar van een object creëren en teruggeven. Dit is meestal een methode met een lichaam waarin je de logica voor het creëren van het object kunt schrijven. -
@Bindswordt toegepast om een interface te koppelen aan de implementatie ervan zonder een nieuw exemplaar te maken. De methode met@Bindsmoet abstract zijn en eenvoudigweg de implementatie van de interface teruggeven die als parameter wordt doorgegeven.
Voorbeeld:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Dus, @Binds is efficiënter en eenvoudiger wanneer je alleen wilt aangeven dat een interface wordt geïmplementeerd door een specifieke klasse, terwijl @Provides wordt gebruikt wanneer er logica nodig is voor het creëren van het object.