Ответ
Предоставление зависимостей через конструктор или методы (Dependency Injection) делает класс более гибким, тестируемым и поддерживаемым. Вместо жесткого создания зависимостей внутри класса, мы передаем их извне, что позволяет:
- Легко заменять реализации (например, моки в тестах)
- Упрощать рефакторинг
- Соблюдать принцип инверсии зависимостей (DIP)
Пример:
// Плохо - зависимость создается внутри
class UserRepository {
private val api = Api() // жесткая привязка
fun getUsers() = api.fetchUsers()
}
// Хорошо - зависимость внедряется
class UserRepository(private val api: Api) {
fun getUsers() = api.fetchUsers()
}