У меня были горячие споры с одним из моих коллег по поводу инъекций зависимости, и я понял, что не знаю всех фактов по этому вопросу.
Итак, возьмите этот код (просто чтобы вы знали, мы используем Castle Windsor)
IPlayerService service = Container.Resolve<IPlayerService>();
Вышеприведенный код, очевидно, является примером DI с использованием IoC.
Однако, см. код ниже (ОБНОВЛЕНИЕ: Предположим, что я передаю ВСЕ внешние зависимости через конструктор):
var playerClient = new PlayerClient();
var playerSkinClient = new PlayerSkinClient();
IPlayerService service = new PlayerService(playerClient, playerSkinClient);
Я утверждаю, что приведенный выше код был примером шаблона DI и что DI может существовать без IoC.
Теперь мой коллега не полностью не согласился с моей мыслью, но он сказал, что приведенный выше код не является примером какой-либо картины, связанной с DI.
-
Итак, можно ли использовать DI как шаблон без каких-либо дополнительных фреймворков?
-
Если это так, является ли приведенный выше код примером?
-
Наконец, что определяет шаблон DI, если он существует, без понятия контейнера.
UPDATE
Сегодня я расскажу об ответах и комментариях более подробно позже, но просто хотел поблагодарить всех за хорошо продуманные ответы и комментарии до сих пор!