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

Внедрение зависимостей(DI) - это design-pattern для объектно-ориентированного программирования, включающего динамическое внедрение (вставку) в программный компонент зависимостей (служебных компонентов), которые ему необходимы для работы, без необходимости зависимого компонента жестко кодировать зависимость от службы. Это уменьшает связь между зависимым потребителем и услугой.

Ресурсы / справочные вопросы

Если вам нужно общее введение в DI, вам следует обратиться к этому вопросу: Что такое внедрение зависимостей?

Если вам нужно нетехническое введение, вы можете обратиться к этому вопросу: Как объяснить инъекцию зависимостей 5-летнему.

Общие рекомендации по написанию кода, удобного для DI без контейнера DI, см. В разделе Внедрение зависимостей (DI) " "библиотека.

Если вам интересно, почему вы должны использовать DI-контейнер (он же ioc-container) вместо DI бедного человека, см. Почему мне нужен контейнер IoC, а не простой DI-код?

Если вам интересно, что такое корень композиции, см. Что такое корень композиции в контексте внедрения зависимостей.

Возможные недостатки использования DI см. В разделе Каковы недостатки использования внедрения зависимостей ?

dependency-injectionи inversion-of-controlтесно связаны между собой. Разница между ними обсуждается на сайте где именно -разностных - между - МОК- и ди -.

Также можно прочитать основные здесь: Внедрение зависимостей для начинающих - 1

Преимущества внедрения зависимости

  • Разделение концернов.
  • Сокращение Boilerplate Code в классах приложений, потому что вся работа по инициализации зависимостей выполняется компонентом инжектора.
  • Конфигурируемые компоненты делают приложение легко расширяемым.
  • Модульное тестирование легко с фиктивными объектами.

Недостатки внедрения зависимости

  • При чрезмерном использовании это может привести к проблемам с обслуживанием, поскольку влияние изменений известно во время выполнения.
  • Внедрение зависимостей скрывает зависимости класса обслуживания, которые могут привести к ошибкам во время выполнения, которые могли быть обнаружены во время компиляции.

Связанные Шаблоны