首页 文章

傻瓜的控制反转(IoC /依赖注入)[重复]

提问于
浏览
4

可能重复:什么是控制反转?

好的,我是这个网站的新手,我已经看到人们真的愿意提供帮助,所以imma会利用这一点,如果你不介意的话就问另一个问题 .

所以,我发誓很多,我发誓,但是,我似乎无法弄明白 . 世界上有什么反转控制(IoC或依赖注入)?为什么ASP.NET MVC Repository Pattern项目使用它如此之多?最后,“容器”是什么意思,当他们说“注入我的控制器”时?

我知道这可能是一个古老的话题(甚至是一个愚蠢的问题),但我似乎无法获得任何傻瓜的答案 .

2 回答

  • 3

    将依赖注入/控制反转视为一个大型对象工厂,一个声明性的,配置驱动的虚拟构造函数 . 通过调用“new”来乱码您的客户端类使用的具体类型,而不是乱丢您的代码,现在您将拥有该虚拟构造函数为您实例化对象 .

    所有这些复杂性给你带来的好处是什么?

    对象创建现在是一个声明性的东西 . 如果您碰巧将设计基于适当的接口,则可以要求对象工厂创建一个代理,以便在方便时实现相同的接口 . 现在可以使用各种好东西:面向方面的编程,透明的远程处理,声明式事务等 .

  • 5

    简单回答:它可以让您交出任何给定对象用于完成其工作的"things" .

    受控示例:假设对象想要出于某种目的获得时间,您将其交给“ITimeService”并在其上调用“GetTime” .

    这样做的目的是将课程“脱离”,使其与您可能不希望的事物 Build 硬关系,并帮助进行测试 .

    在我的拙见中,有些人有点过分,但测试论证是有效的,当然这是一种有时采用的方法 .

    更多参与答案:Martin Fowler on Inversion of Control .

相关问题