Ответ
Нарушение принципа Dependency Inversion (D из SOLID) приводит к жесткой связанности между компонентами, что усложняет тестирование, поддержку и модификацию кода. Пример:
class Car {
private val engine = PetrolEngine() // Нарушение: зависимость от конкретного класса
fun start() = engine.start()
}
Проблемы:
- Невозможно подменить реализацию (например, на
ElectricEngine) - Сложность тестирования (реальные зависимости в тестах)
- Изменения в
PetrolEngineломаютCar
Исправленный вариант через инъекцию зависимости:
class Car(private val engine: Engine) { // Зависим от абстракции
fun start() = engine.start()
}
Соблюдение DIP делает код гибким и расширяемым.