Инверсия зависимостей (Dependency Inversion) является одним из принципов SOLID, который предлагает следовать принципу "Зависимости должны быть относительно стабильными, а детали должны быть относительно изменчивыми". Этот принцип направлен на уменьшение связанности между компонентами системы и повышение их переиспользуемости и гибкости. Основная идея принципа инверсии зависимостей заключается в том, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. Вместо этого, оба уровня должны зависеть от абстракций. Это означает, что классы верхнего уровня должны зависеть от абстрактных интерфейсов или абстрактных классов, а не от конкретных реализаций. Преимущества инверсии зависимостей включают: Возможность замены реализации компонентов без изменения кода, который зависит от этих компонентов. Пример применения принципа инверсии зависимостей может быть следующим: вместо того, чтобы класс верхнего уровня создавал экземпляр класса нижнего уровня напрямую, он зависит от абстр