Модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те, и другие должны зависеть от абстракции. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

Во-первых, давайте определим термины, используемые здесь, проще.Высокроуровневый Модуль(или класс): Класс, выполняющий действие с помощью инструмента.Низкоуровневый модуль (или класс): Инструмент, необходимый для выполнения действия.Абстракция: Представляет собой интерфейс, соединяющий два класса.Детали: То, как работает инструмент.

Этот принцип гласит, что класс не должен смешиваться с инструментом, который он использует для выполнения действия. Скорее, он должен быть объединен с интерфейсом, который позволит инструменту соединиться с классом.Он также говорит, что и класс, и интерфейс не должны знать, как работает инструмент. Однако, инструмент должен соответствовать спецификации интерфейса.

Цель

Этот принцип направлен на уменьшение зависимости высокоуровневого класса от низкоуровневого путем внедрения интерфейса.