Зачем классу предоставлять зависимость

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

Ответ

Предоставление зависимостей через конструктор или методы (Dependency Injection) делает класс более гибким, тестируемым и поддерживаемым. Вместо жесткого создания зависимостей внутри класса, мы передаем их извне, что позволяет:

  1. Легко заменять реализации (например, моки в тестах)
  2. Упрощать рефакторинг
  3. Соблюдать принцип инверсии зависимостей (DIP)

Пример:

// Плохо - зависимость создается внутри
class UserRepository {
    private val api = Api() // жесткая привязка

    fun getUsers() = api.fetchUsers()
}

// Хорошо - зависимость внедряется
class UserRepository(private val api: Api) {
    fun getUsers() = api.fetchUsers()
}