Hay un artículo de Google sobre la Inyección Manual de Dependencias . En él, usan una clase de Application que contiene un AppContainer , que a su vez contiene dependencias que otras clases podrían necesitar:
class AppContainer { private val retrofit = Retrofit.Builder()... val userRepository = UserRepository(localDataSource, remoteDataSource) } Una Activity podría hacer lo siguiente para obtener una dependencia, por ejemplo. un repositorio:
val appContainer = (application as MyApplication).appContainer val loginViewModel = LoginViewModel(appContainer.userRepository)Afirman lo siguiente:
Inyección de dependencia... le permite intercambiar implementaciones para realizar pruebas.
¿Se puede hacer esto con ese enfoque (o cualquiera de los otros presentados en la página mencionada anteriormente)?
Traté de encontrar una forma canónica y no encontré una que no implicara reflexión o burla o algo por el estilo.