DIP требует, чтобы высокоуровневая бизнес-логика и низкоуровневые детали зависели от абстракций, а не друг от друга напрямую. Детали реализации подстраиваются под нужный домену контракт.
Опишите принцип инверсии зависимостей (Dependency Inversion Principle, DIP) из SOLID.
DIP требует, чтобы высокоуровневая бизнес-логика и низкоуровневые детали зависели от абстракций, а не друг от друга напрямую. Детали реализации подстраиваются под нужный домену контракт.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
DIP требует, чтобы высокоуровневая бизнес-логика и низкоуровневые детали зависели от абстракций, а не друг от друга напрямую. Детали реализации подстраиваются под нужный домену контракт.
Например, сценарий создания заказа зависит от интерфейса отправки уведомлений, а SMTP-клиент реализует этот интерфейс. Тогда смена провайдера не переписывает бизнес-сценарий. В Python абстракцией может быть Protocol, ABC или небольшой договорённый callable-интерфейс. Dependency injection — способ передать реализацию, но сам по себе не гарантирует DIP: можно внедрить объект, чей контракт всё ещё протекает техническими деталями. Важнее направление зависимости, чем количество интерфейсов.