¿En qué se diferencia el mecanismo Binds de Provides en el contexto de inyección de dependencias o sistemas modulares?
sobes.tech AI
Respuesta de la IA
En el contexto de la inyección de dependencias (por ejemplo, Dagger en Android), las anotaciones @Provides y @Binds sirven para diferentes propósitos, aunque ambas se utilizan para proporcionar dependencias.
-
@Providesse usa para métodos que crean y devuelven una instancia concreta de un objeto. Normalmente, es un método con cuerpo donde se puede escribir la lógica de creación del objeto. -
@Bindsse aplica para vincular una interfaz con su implementación sin crear una nueva instancia. El método con@Bindsdebe ser abstracto y simplemente devolver la implementación de la interfaz pasada como parámetro.
Ejemplo:
@Module
abstract class NetworkModule {
@Binds
abstract fun bindApiService(impl: ApiServiceImpl): ApiService
}
@Module
class DatabaseModule {
@Provides
fun provideDatabase(): Database {
return DatabaseImpl()
}
}
Por lo tanto, @Binds es más eficiente y simple cuando solo necesitas indicar que una interfaz es implementada por una clase concreta, mientras que @Provides se usa cuando se requiere lógica para crear el objeto.