Ответ
Да, работал с Dependency Injection (DI) на Android, в основном через Dagger/Hilt и Koin.
Dagger/Hilt – стандартный DI-фреймворк от Google. Пример:
@HiltAndroidApp
class MyApp : Application()
@Module
@InstallIn(SingletonComponent::class)
object AppModule {
@Provides
fun provideRepository(): Repository = RepositoryImpl()
}
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var repository: Repository
}
Koin – легковесная альтернатива:
val appModule = module {
single<Repository> { RepositoryImpl() }
}
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
startKoin { modules(appModule) }
}
}
Плюсы DI: тестируемость, модульность, чистая архитектура. Минусы: кривая обучения (Dagger), оверхед для маленьких проектов.