【问题标题】:Inversion of Control < Dependency Injection [closed]控制反转<依赖注入[关闭]
【发布时间】:2011-03-14 16:28:13
【问题描述】:

我感觉没有控制反转之类的东西,或者正确的术语是依赖注入。我这样想错了吗?

我一直试图为自己定义 IoC。在此过程中,我学到了很多关于 IoC 容器和依赖注入的知识。

刚刚,我从Martin Fowler's website读到这个:

因此,我认为我们需要更多 此模式的特定名称。 控制反转太笼统了 术语,因此人们发现它 令人困惑。结果与很多 与各种 IoC 倡导者进行讨论 我们选择了 Dependency 这个名字 注射。

在现代 IoC 的世界中,依赖注入不只是实现 IoC 的一种方式吗?

【问题讨论】:

标签: dependency-injection inversion-of-control terminology


【解决方案1】:

是的,IoC 是指类本身不控制事物,而是从外部调用。依赖注入就是这样做的方法。

依赖注入确实是一个更具体的术语,比控制反转更明确。

【讨论】:

    【解决方案2】:

    如果您接受Fowler's definition,则控制反转是一个比 DI 更更广泛的术语,它涵盖了您插入框架的所有 框架 用法,但框架是仍在控制之中。

    例如,在 .NET 中,ASP.NET 或 Windows Presentation Foundation 等框架最终处于控制之中,但提供了各种 事件Seams 可用于构建一个应用程序。在其他平台上也是如此。

    依赖注入是 IoC 的一种专业化,专门应用 IoC 来管理依赖关系。

    【讨论】:

    • 谢谢,这确实澄清了一些事情。你知道我可以找到更多 IoC 示例的地方吗?
    • 实际上,IOC(相对于 DI)在 OO 中无处不在。很难找到相反的例子。我只是真正了解 .NET 平台,但您在那里使用的几乎所有类型的子框架(ASP.NET、Windows 窗体、WCF 等)都是 IoC 框架。只有控制台应用真正不属于此类别。
    • 鉴于 Fowler 的声明,这是一个保证:“控制反转是一个过于笼统的术语”。更具体地说,我希望看到 DP 和 IoC 示例。我真的很想了解更多关于如何通过 DP 实现良好的 IoC。
    • @Mark - 是的,愚蠢的错字。我正在学习如何利用 IoC 和 DI,并且代码示例肯定会继续下去。
    • 好吧,如果您能阅读 C# 示例,我正在编写一本关于该主题的书...manning.com/seemann
    【解决方案3】:

    这是我和马克不同意的少数几个观点之一。根据我的书,控制反转原理same as here,所以我不会重复它。

    依赖注入只是将组件创建依赖于外部世界的行为。

    管理这些依赖项(以及许多其他东西)是控制容器的反转所做的,并且使用 DI 作为其中的一部分,只是一个实现细节。

    【讨论】:

      猜你喜欢
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2015-07-30
      • 2015-01-09
      • 2011-03-01
      相关资源
      最近更新 更多