【发布时间】:2011-08-05 18:49:53
【问题描述】:
似乎每个人都在转向 IoC 容器。我已经尝试“摸索”了一段时间,尽管我不想成为一个在高速公路上走错路的司机,但它仍然没有通过常识对我的考验。让我解释一下,如果我的论点有缺陷,请纠正/启发我:
我的理解:当组合不同的组件时,IoC 容器应该让您的生活更轻松。这是通过 a) 构造函数注入、b) setter 注入和 c) 接口注入来完成的。然后以编程方式或在容器读取的文件中“连接”它们。然后按名称召唤组件,然后在需要时手动施放。
我没有得到什么:
编辑:(更好的措辞) 如果组件设计得当(使用 IoC 模式、松散耦合),当您可以(恕我直言)更清晰地“连接”应用程序时,为什么要使用不符合语言习惯的不透明容器?这个“托管代码”如何获得重要的功能? (我听说过一些关于生命周期管理的内容,但我不一定明白这比自己动手做的更好/更快。)
原创: 为什么要竭尽全力将组件存储在容器中,以不符合语言习惯的方式“连接它们”,在按名称调用组件时使用相当于“goto 标签”的东西,然后丢失很多通过手动转换获得静态类型语言的安全优势,当您通过不这样做来获得 等效 功能时,而是使用现代 OO 语言提供的所有很酷的抽象特性,例如编程到接口?我的意思是,实际需要使用手头组件的部分必须知道他们在任何情况下都在使用它,在这里您将使用最自然、最惯用的方式进行“接线” - 编程!
【问题讨论】:
标签: inversion-of-control ioc-container