Внедрение зависимостей представляет собой тип реализации принципа " Inversion of Control ", на котором основано построение Frameworks.
Frameworks , как указано в «Шаблоне проектирования» GoF, - это классы, которые реализуют основную логику потока управления, побуждая разработчика сделать это, таким образом, Frameworks реализует принцип инверсии управления.
Способ реализации как техника, а не как иерархия классов, этот принцип IoC - это просто внедрение зависимости.
DI состоит главным образом в делегировании отображения экземпляров классов и ссылки на тип этих экземпляров на внешнюю "сущность": объект, статический класс, компонент, каркас и т. Д. *
Экземплярами классов являются " зависимости ", внешняя привязка вызывающего компонента с экземпляром класса через ссылку, это " инъекция ».
Очевидно, что вы можете реализовать эту технику по-разному с точки зрения ООП, см., Например, инжекция конструктора , инъекция сеттера , инъекция интерфейса .
Делегирование третьей стороны для выполнения задачи сопоставления ссылки с объектом очень полезно, когда вы хотите полностью отделить компонент, которому нужны некоторые службы, от той же реализации служб.
Таким образом, при проектировании компонентов вы можете сосредоточиться исключительно на их архитектуре и их конкретной логике, полагаясь на интерфейсы для совместной работы с другими объектами, не беспокоясь об изменениях реализации каких-либо типов используемых объектов / служб, в том числе при наличии одного и того же объекта. вы используете будет полностью заменен (очевидно, уважая интерфейс).