Принцип инверсии зависимостей (англ. dependency inversion principle, DIP) — принцип объектно-ориентированного программирования, суть которого состоит в том, что классы должны зависеть от абстракций, а не от конкретных деталей[1]. Используется для минимизации зацепления в компьютерных программах. Может рассматриваться как уменьшение знаний о данных и поведении объекта (и зацепления с ним) до минимума, описанного интерфейсом.
Этот принцип также может быть применен и функциональному программированию, в этом случае зависимость должна быть указана от максимально абстрактных типов данных и функций.
Принцип входит в пятёрку принципов SOLID. Принцип был выведен в трудах Роберта Мартина[1][2].
Формулировка[2]:
Формулировка на русском языке: