Ответ
DI (Dependency Injection) — это паттерн проектирования, позволяющий передавать зависимости объекта извне, а не создавать их внутри. Это улучшает тестируемость, уменьшает связанность кода и упрощает поддержку.
Пример с Dagger (популярная DI-библиотека для Android):
// Зависимость
class NetworkService(private val url: String) {
fun fetchData() { ... }
}
// Модуль Dagger
@Module
class AppModule {
@Provides
fun provideNetworkService(): NetworkService {
return NetworkService("https://api.example.com")
}
}
// Внедрение зависимости
class MyViewModel @Inject constructor(
private val networkService: NetworkService
) {
fun loadData() {
networkService.fetchData()
}
}
Основные виды DI:
- Constructor Injection (как в примере)
- Field Injection
- Method Injection
Популярные DI-библиотеки: Dagger, Hilt, Koin.