Что произойдет, если нарушится принцип Dependency Inversion

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

Ответ

Нарушение принципа Dependency Inversion (D из SOLID) приводит к жесткой связанности между компонентами, что усложняет тестирование, поддержку и модификацию кода. Пример:

class Car {
    private val engine = PetrolEngine() // Нарушение: зависимость от конкретного класса
    fun start() = engine.start()
}

Проблемы:

  1. Невозможно подменить реализацию (например, на ElectricEngine)
  2. Сложность тестирования (реальные зависимости в тестах)
  3. Изменения в PetrolEngine ломают Car

Исправленный вариант через инъекцию зависимости:

class Car(private val engine: Engine) { // Зависим от абстракции
    fun start() = engine.start()
}

Соблюдение DIP делает код гибким и расширяемым.