Ответ
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) { // зависимость через интерфейс
}
Плюсы:
- Уменьшение связанности кода
- Упрощение тестирования (можно подменять реализации)
- Гибкость архитектуры
Как применять:
- Выделять интерфейсы для зависимостей
- Внедрять зависимости через конструктор/методы (DI)
- Использовать DI-фреймворки (Dagger/Hilt/Koin)
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶