Почему так много терминов, чтобы сказать то же самое?IoC и DIP - PullRequest
1 голос
/ 07 сентября 2011

IoC = инверсия управления

DIP = принцип инверсии зависимости (D в твердом теле)

IoC == DIP ?Я думаю, это правда.

Мир создания программного обеспечения уже настолько запутан, почему так много слов, чтобы сказать то же самое?

(я знаю DI (Внедрение зависимостей) и отличается от DIP и IoC )

Обновление:

Согласно ответам, томожно сказать, что: ( DI ) + ( IoC ) = ( Принцип инверсии зависимостей )?

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Я не думаю, что вы получите авторитетный ответ на этот вопрос, потому что термин «IoC» отчасти перегружен, и сказать «единственное истинное значение IoC - это…» является своего рода педантичным.Но я все равно поделюсь своим мнением:)

Инверсия зависимости примерно зависит от абстракции.Рассмотрим класс HelloWorld, который зависит от IStringWriter, и класс реализации ConsoleStringWriter.

Инверсия Control - это когда инфраструктура / инфраструктура вызывает код приложения, а ненаоборотНапример, когда пользователь закрывает приложение WPF, вы не вызываете платформу, оно вызывает событие , на которое вы можете подписаться.

Они часто объединяются. Например, Hibernate зависит от абстракции, определенной его интерфейсом перехватчика , для реализации IoC.С точки зрения Перехватчика, управление инвертировано - Hibernate вызывает Перехватчик.Другой пример, который вы видите повсюду: IHandle<T>, где T - это Событие, или Команда, или Сообщение - инфраструктура вызывает обработчик в нужное время.

Это сбивает с толку, потому что мы называем их «контейнерами IoC», ноВы можете сделать DI, не делая IoC.Если вы добавляете ConsoleStringWriter в HelloWorld, я на самом деле не думаю об этом как о IoC, потому что здесь нет "фреймворка" или "инфраструктуры".Но это потому, что Hello World тривиален - по мере усложнения приложения потребность в IoC возрастает.

См. Также этот вопрос и принятый ответ.

3 голосов
/ 07 сентября 2011

Инверсия контроля - это общий термин.Внедрение зависимостей - это особый тип IoC.

См. Инверсия управляющих контейнеров и шаблон ввода зависимостей .

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

Используется в предложении:

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

Обновление:

Мне не кажется, что (DI) +(IoC) = (принцип инверсии зависимости) является точным.Это все равно что сказать (яблоко) + (еда) = (хорошее питание) .Каждый термин имеет определенное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...