Разница между инверсией контроля и зависимостями инъекций

Концепция IoC и DI очень смущала меня, поэтому я читал много просмотров и сообщений разных людей и, наконец, доходил до конца. Поэтому, насколько я понимаю, эти темы...

Инверсия управления - это метод в Java для создания слабосвязанных и более легко поддерживаемых приложений, а инъекция зависимостей - это один из способов достижения этой концепции (техники).

Инверсия управляющего контейнера в зависимости от времени запуска из классов java для создания слабосвязанного приложения.

Это правда? исправьте меня, если я ошибаюсь...

Ответы

Ответ 1

IoC - это общий термин, означающий вместо того, чтобы приложение вызывало методы в рамках, инфраструктура вызывает реализации, предоставляемые приложением.

DI - это форма IoC, где реализации передаются в объект через конструкторы/сеттеры/службы, которые будут зависеть от объекта, чтобы вести себя корректно.

Ссылка: Инверсия управления и инъекции зависимостей

Ответ 2

Это шаблоны для достижения свободной связи при программировании

DI (инъекция зависимостей):
Инъекция зависимостей - это шаблон, используемый для создания экземпляров объектов что другие объекты полагаются, не зная во время компиляции какой класс будет использоваться для обеспечения того, что функциональность или просто способ инъекции свойств объекту называется инъекцией зависимостей.

У нас есть три типа инъекций зависимостей

  • Инъекция конструктора
  • Инсталляция Setter/Getter
  • Инъекция интерфейса

Spring будет поддерживать только инжекцию конструктора и инъекцию Setter/Getter.

IOC (инверсия управления):
Предоставление контроля контейнеру для создания и ввода экземпляров объектов, зависящих от вашего приложения, означает, что вместо создания объекта с помощью оператора new пусть контейнер сделает это за вас. Инверсия управления зависит от инъекции зависимостей, потому что необходим механизм для активации компонентов, обеспечивающих определенную функциональность.

Эти две концепции работают вместе таким образом, чтобы обеспечить возможность записи гораздо более гибкого, многоразового и инкапсулированного кода. Таким образом, они являются важными понятиями при проектировании объектно-ориентированных решений.

Пример для инъекции зависимостей

Раньше мы пишем такой код

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();
}

С помощью инъекции зависимостей инжектор зависимостей удалит нам экземпляр

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();
}

Вышеупомянутый процесс предоставления контроля другому (например, контейнеру) для инстанцирования и инъекции можно назвать Инверсия управления

В моем ответе вы можете больше узнать об инъекции зависимостей и МОК: -

Что такое инъекция зависимостей?

Здесь вы можете найти преимущества и применения понятий.

Ответ 3

Инверсия управления означает, что делегат программы управляет кем-то, кто будет управлять потоком IOC (Inversion of control), является общим родительским термином, а DI (инъекция зависимостей) является подмножеством IOC. IOC - это концепция, в которой поток приложения инвертирован. Контроль логики, которая не является частью этого объекта, взят кем-то другим. DI предоставляет объекты, необходимые объекту. Поэтому, а не сами конструкции зависимостей, они вводятся. Наибольшее преимущество, достигнутое в результате вышеупомянутого подхода, - "Развязка", мы можем вызывать объект и передавать объекты, сохраняющие объекты, независимо от возможности повторного использования и обслуживания.

Ответ 4

Инверсия управления (IoC) относится к стилю программирования, в котором среда или среда выполнения управляет потоком программы. Инверсия средств управления означает, что мы меняем контроль с обычного пути. Он работает над принципом инверсии зависимостей.

DI - это шаблон проектирования программного обеспечения, который позволяет нам разрабатывать свободно связанный код. DI - отличный способ уменьшить жесткую связь между программными компонентами. DI также позволяет нам лучше управлять будущими изменениями и другой сложностью в нашем программном обеспечении. Цель DI - сделать код обслуживаемым.

Ответ 5

IOC означает "Inversion of Control". Он будет работать на основе принципа IOC, это означает сотрудничество объектов и управление объектами жизненного цикла. Комбинация означает, что объекты группируются вместе в одном месте. мы можем сотрудничать с объектами, это два способа, которыми они являются: "Зависимость от нагрузки и зависимостей". DP разделен на два пути (растяжение зависимостей и растяжка контекстной зависимости) и DI также разделены на два пути (инжекция Setter и инжекция конструктора).IOC поддерживает оба способа, но главное намерение работы фрейма spring - это наши компоненты полностью слабо связан. Если мы будем использовать Dependency pull, то наш компонентный класс будет тесно связан с другим классом, хотя в рамках работы с фреймом spring. Затем рекомендуется использовать для инъекций зависимостей (инжекция сеттера или инжекция конструктора). Нет никакой разницы между IOC и DI.IOC отличается, а DI - другим, DI является одной из частей IOC.

Ответ 6

Инверсия управления и зависимостей Инъекция является основным шаблоном проектирования структуры Spring. Модель дизайна IOC и DI также является популярным вопросом интервью с шаблоном дизайна на Java. Как следует из названия, инверсия шаблона управления Инвертирует ответственность за управление жизненным циклом объекта, например. создание объекта, установление их зависимости и т.д. от приложения к фреймворку, что делает запись приложения Java еще более легкой.

Подробнее: http://javarevisited.blogspot.com/2012/12/inversion-of-control-dependency-injection-design-pattern-spring-example-tutorial.html#ixzz4xve86pPN