Для чего нужен Dependency Injection

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

Ответ

Dependency Injection (DI) — это паттерн, который помогает управлять зависимостями между классами, передавая их извне, а не создавая внутри.

Преимущества:

  • Уменьшает связанность кода (снижает coupling).
  • Упрощает тестирование (можно передавать mock-объекты).
  • Упрощает поддержку и масштабирование.

Пример с Dagger (DI-фреймворк):

class Car(private val engine: Engine) {  
    fun start() = engine.start()  
}  

// Внедрение через конструктор  
val car = Car(Engine())  

Без DI:

class Car {  
    private val engine = Engine() // Жёсткая зависимость  
}  

DI делает код гибче и чище. Популярные библиотеки: Dagger, Hilt, Koin.