Все вышеприведенные ответы хороши, моя цель - объяснить концепцию простым способом, чтобы любой человек, не имеющий знаний в области программирования, также мог понять концепцию
Внедрение зависимостей является одним из шаблонов проектирования, которые помогают нам создавать сложные системы более простым способом.
Мы можем наблюдать широкое применение этого паттерна в нашей повседневной жизни.
Вот некоторые примеры: магнитофон, VCD, CD-привод и т. Д.
![Reel-to-reel portable tape recorder, mid-20th century.](https://i.stack.imgur.com/Ubcrh.jpg)
Приведенное выше изображение является изображением портативного магнитофона Reel-to-reel, середина 20-го века. Источник .
Основной целью магнитофона является запись или воспроизведение звука.
При проектировании системы требуется катушка для записи или воспроизведения звука или музыки. Есть две возможности для проектирования этой системы
- мы можем разместить катушку внутри машины
- мы можем предоставить крючок для катушки, где он может быть размещен.
Если мы используем первый, нам нужно открыть машину, чтобы сменить барабан.
если мы выберем второй вариант, который устанавливает крючок для барабана, мы получаем дополнительное преимущество от воспроизведения любой музыки, меняя барабан. а также сводя функцию только к игре на барабане.
Аналогично, разумное внедрение зависимостей - это процесс экстернализации зависимостей, чтобы сосредоточиться только на конкретной функциональности компонента, чтобы независимые компоненты могли быть соединены вместе для формирования сложной системы.
Основные преимущества, которые мы получили, используя внедрение зависимостей.
- Высокая когезия и слабое сцепление.
- Внешняя зависимость и взгляд только на ответственность.
- Создание вещей как компонентов и объединение в большие системы с высокими возможностями.
- Это помогает разрабатывать высококачественные компоненты, так как они разрабатываются независимо, они должным образом проверены.
- Помогает заменить компонент другим в случае сбоя.
В наши дни эти концепции составляют основу хорошо известных фреймворков в мире программирования.
Spring Angular и т. Д. - это хорошо известные программные среды, построенные на основе этой концепции
Внедрение зависимостей - это шаблон, используемый для создания экземпляров объектов, на которые полагаются другие объекты, не зная во время компиляции, какой класс будет использоваться для предоставления этой функциональности или просто способ внедрения свойств в объект называется инъекцией зависимостей.
Пример для внедрения зависимости
Ранее мы писали такой код
Public MyClass{
DependentClass dependentObject
/*
At somewhere in our code we need to instantiate
the object with new operator inorder to use it or perform some method.
*/
dependentObject= new DependentClass();
dependentObject.someMethod();
}
С внедрением Dependency, инжектор зависимостей снимает для нас экземпляр
Public MyClass{
/* Dependency injector will instantiate object*/
DependentClass dependentObject
/*
At somewhere in our code we perform some method.
The process of instantiation will be handled by the dependency injector
*/
dependentObject.someMethod();
}
Вы также можете прочитать
Разница между инверсией управления и введением зависимости