Я знаю, что на впрыскивании зависимостей много нитей и нитей, но не так много на Depenedency-Injection-Containers. Я нашел this one by Fabien Potencier весьма полезным, хотя он нацелен на PHP. Однако чем больше я читаю об этих контейнерах, я прихожу к выводу, что это не что иное, как простая коллекция заводских методов, это правда?DI-контейнер против заводов
Более глубокое и более конкретный вид: При внутривенном введении зависимость к объекту
foo.Bar = new Dependency();
Я мог бы также написать
foo.Bar = new myFactory.CreateDependency();
или с контейнером
foo.Bar = myContainer.CreateDependency();
Здесь контейнер в рамках последнего подхода не содержит только один, но многие другие методы для создания другие типы также, так что это просто контейнер для заводских методов, не так ли?
Но как узнать, как WHEN построить новый экземпляр любого класса? – HimBromBeere
Конечно, должен быть явный вызов контейнера DI, и это должно быть сделано в некоторой «точке входа». Например, в веб-приложении этот момент представляет собой создание контроллера, где вызывается решение: container.Resolve. Но SomeController сам не знает, что используется контейнер DI. В этом суть структуры корневого состава. –
wunzsh