Ответ
Основные проблемы без инжекта зависимостей в Dagger:
- Тестирование усложняется - без DI сложно подменять зависимости на моки/стабы
- Жесткая связанность - классы знают о конкретных реализациях зависимостей
- Повторное использование кода - зависимости не могут быть легко переиспользованы
- Жизненный цикл - ручное управление временем жизни объектов
Пример плохого кода:
class MyViewModel {
private val repo = NetworkRepository() // жесткая привязка
}
Пример с Dagger:
class MyViewModel @Inject constructor(
private val repo: Repository // абстракция + инжект
)
Dagger решает эти проблемы через:
- автоматическое создание графа зависимостей
- управление скоупами
- легкую подмену реализаций