Ответ
Инверсия зависимостей (Dependency Inversion Principle, DIP) — один из принципов SOLID, который гласит:
- Модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций.
- Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.
Пример без DIP:
class Engine { fun start() {} }
class Car {
private val engine = Engine()
fun start() { engine.start() }
}
Здесь Car напрямую зависит от Engine.
Пример с DIP:
interface Engine { fun start() }
class PetrolEngine : Engine { override fun start() {} }
class Car(private val engine: Engine) {
fun start() { engine.start() }
}
Теперь Car зависит от абстракции (Engine), а не от конкретной реализации.
Плюсы:
- Гибкость (легко менять реализации).
- Упрощение тестирования (можно подменять зависимости).
- Снижение связанности кода.