我与同事就依赖注入进行了激烈辩论,发现我并不完全了解该主题的所有细节。
于是,看看这段代码(只是为了让你知道,我们正在使用Castle Windsor)。
IPlayerService service = Container.Resolve<IPlayerService>();
上述代码显然是使用IoC实现DI的示例。
但请看下面的代码 (更新: 假设我通过构造函数传递了所有外部依赖项):
var playerClient = new PlayerClient();
var playerSkinClient = new PlayerSkinClient();
IPlayerService service = new PlayerService(playerClient, playerSkinClient);
我认为上面的代码是依赖注入(DI)模式的一个例子,并且DI可以在没有IoC的情况下存在。
现在,我的同事并不完全反对我的观点,但他说上述代码不是涉及DI的任何模式的例子。
那么,DI能否作为一种仅使用模式而没有额外框架的方式?
如果可以,上面的代码是否是它的一个例子?
最后,如果没有容器的概念,是否存在定义DI模式的方式?
更新
我将会更仔细地阅读答案和评论,但是我想感谢大家迄今为止给出的深思熟虑的答案和评论!