Что такое dependency inversion principle

«Что такое dependency inversion principle» — вопрос из категории ООП, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Dependency Inversion (DIP) — принцип SOLID, гласящий, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей — детали должны зависеть от абстракций.

Пример без DIP:

class Engine { /* реализация */ }
class Car {
    private val engine = Engine() // жесткая зависимость
}

Пример с DIP:

interface EngineInterface { /* абстракция */ }
class PetrolEngine : EngineInterface { /* реализация */ }
class ElectricEngine : EngineInterface { /* другая реализация */ }

class Car(private val engine: EngineInterface) { // зависимость через интерфейс
}

Плюсы:

  • Уменьшение связанности кода
  • Упрощение тестирования (можно подменять реализации)
  • Гибкость архитектуры

Как применять:

  1. Выделять интерфейсы для зависимостей
  2. Внедрять зависимости через конструктор/методы (DI)
  3. Использовать DI-фреймворки (Dagger/Hilt/Koin)

Видео-ответы