Разница между dependency injection и dependency inversion?
Суть
Это разные вещи с похожими названиями:
- Dependency Inversion Principle (DIP) — принцип проектирования (буква D в SOLID): модуль верхнего уровня не зависит от модуля нижнего уровня, оба зависят от абстракции, и абстракцией владеет верхний уровень. Речь о направлении зависимостей в графе типов.
- Dependency Injection (DI) — техника: объект получает свои зависимости снаружи (через
init, свойство или параметр метода), а не создаёт их сам. Речь о способе передать зависимость.
DI — самый распространённый способ реализовать DIP, но одно без другого возможно.
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep