2011-11-04 2 views
12

Я читал на DI, и это кажется простой концепцией. То, что я не получаю, это контейнер. Предположим, что я хочу создать свой собственный контейнер. Глаголы, такие как «обнаружение», используются, и я не понимаю, как контейнер «обнаруживает», что был создан новый зависимый объект, и знаю, чтобы вводить его зависимости. Мне кажется, что контейнер - это прославленная фабрика.Контейнер для инъекций? Что оно делает?

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

Спасибо!

ответ

14

Это взято из Windsor documentation

Инверсия Контроля

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

Это противоположность использованию API, в котором код разработчика делает invocations для кода API. Следовательно, фреймворки инвертируют управление: не является кодом разработчика, а структура делает вызовы на основе некоторого стимула.

Возможно, вы были в ситуациях, когда у вас развился свет этого принципа, хотя вы не знали об этом.

Инверсия контроля Контейнер

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

Существует некоторая путаница, созданная людьми, которые считают, что «Inversion of Control» является синонимом «Inversion of Control Container». Как указано в , инверсия управления является более широким принципом.

Часто люди думают, что речь идет о «инъекции», и широковещательная передача такова, что это основная цель контейнеров IoC. Фактически, «инъекция» является следствием, средством отделить, а не основной задачей .

2

Возможно, вы прочитаете эту книгу Dependency Injection In .NET ... Я уже прочитал ее, и я настоятельно рекомендую вам ее прочитать. Сначала он дает хорошее и проницательное объяснение по DI, а затем показывает код и образцы реальных приложений DI.

Из этой книги, и слишком мало слов ...

"DI container is the technology used to support the DI technique" Page 55 
+0

+1 Похоже на хорошее чтение. Спасибо. –

+1

Да, это так. Btw Mark Seeman активно paticipates на stackoverflow, вы можете связаться с ним легко и спросить его прямо, я верю. – renatoargh

Смежные вопросы