Что такое DI

«Что такое DI» — вопрос из категории DI, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.