首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是什么使IoC容器成为IoC容器?

是什么使IoC容器成为IoC容器?
EN

Stack Overflow用户
提问于 2014-03-22 01:27:02
回答 1查看 242关注 0票数 3

所以.我一直在研究IoC容器和服务定位器。

我认为IoC容器是IoC容器,而不是服务定位器,因为

  1. 你用它的方式。将服务定位器传递给需要依赖项的类,然后通过容器检索依赖项。另一方面,使用IoC容器将依赖项注入到类中。
  2. IoC容器支持自动布线,而服务定位器则不支持。

我一直认为IoC容器支持自动布线,它必须支持它才能被称为IoC容器,但是我和一些人进行了转换,他们告诉我IoC容器不需要支持自动装配。

如果是这样的话,是什么使IoC容器成为IoC容器,除了您使用它的方式之外?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-22 07:24:13

DI容器是可以以各种方式使用的库:

  • 您可以编写的最简单(伪) DI容器基本上只是一个美化的字典。你可以构建每15行代码中的一个。然而,它不进行自动连接,这意味着它不进行组合,因此此时您只能使用它作为服务定位器,但是由于服务定位器是一种反模式。,这并没有什么好处。
  • 一个更好的DI容器也做自动布线.一旦它可以自动布线,你也可以使用它作为一个合成引擎。这意味着您可以在容器无关的模式(如构造器注入)上设计自己的代码,然后在成分根中要求组合引擎(DI容器)将所有内容组合在一起。

一旦DI容器支持自动配线,您就可以在两种方式中使用它,但您应该只使用它作为组合引擎。

由于Service是一种反模式,因此美化字典没有任何价值。作为最低限度,我想说库必须支持自动布线才能成为DI容器。然而,这仍然不能使它成为一个有价值的组成部分。要从DI容器获得值,它必须支持复杂的基于约定的启发式方法。;如果不是,最好手工编写作文(AKA的DI)。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22572261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档