Ответ
Внедрение зависимостей (DI) — это паттерн проектирования, при котором объекты получают свои зависимости извне, а не создают их внутри. Это делает код более гибким, тестируемым и поддерживаемым.
Основные преимущества:
- Уменьшение связанности кода
- Упрощение тестирования (можно подменять зависимости моками)
- Упрощение повторного использования кода
Пример с Dagger/Hilt:
// Зависимость
class NetworkService @Inject constructor() { ... }
// Класс, использующий зависимость
class Repository @Inject constructor(
private val networkService: NetworkService
) { ... }
Способы внедрения:
- Через конструктор (предпочтительно)
- Через поля (setter injection)
- Через интерфейсы
Популярные библиотеки для DI: Dagger, Hilt, Koin.