Принцип инверсии зависимостей (Dependency Inversion Principle — DIP, буква D в аббревиатуре SOLID), описанный Робертом Мартином, состоит из двух постулатов:
- Высокоуровневые модули не должны зависеть от низкоуровневых; и те и другие должны зависеть от абстракций
- Абстракции не должны зависеть от деталей, детали должны зависеть от абстракций
Инверсия зависимостей заключается в том, что модули разных уровней зависят не друг от друга, а от абстракций. В общих чертах принцип инверсии зависимостей сводится к следующему набору простых правил:
- Взаимодействие между классами должно быть реализовано через интерфейсы или абстрактные классы
- Типами всех членов классов должны быть интерфейсы или абстрактные классы
- Классы, являющиеся конечными реализациями не должны расширяться (или должны быть финальными)
- Аналогично методы не должны перекрываться при наследовании (или быть финальными)
Читать далее SOLID на практике — принцип инверсии зависимостей