Ответ
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.