首页 新闻 会员 周边 捐助

IOC 具体作用究竟是什么。

0
[已解决问题] 解决于 2017-11-14 20:01

看了很多文章,千篇一律全是 解释什么是 依赖注入  什么是控制反转,都说是为了解耦,但是并没有说 优势  怎么解耦法。

有的人说因为 面相接口编程  所以要用到。

 但是很多开源项目里  一个接口只有一个实现   需要什么依赖注入 需要啥容器去反转,还不如直接new。。。感觉不出优势。

感觉大部分都是依葫芦画瓢,别人用了 autofac 或者 unity 我也就要用。

 

补充一下   很多 开源项目这样写 
接口 IxxxBLL  然后业务层  xxxBLL: IxxxBLL  

然后用第3方工具 注入到容器


然后再需要的地方 比如 controller
 IxxxBLL xx;
xxx(IxxxBLL  yy)
{
    xx = yy;
}

不明白 我直接new 跟你这有啥区别。。。别说什么 要遵守 依赖倒置这些。。。就问 有啥优势。

理解的不深,请赐教。谢谢各位!

Allen_Chang的主页 Allen_Chang | 初学一级 | 园豆:101
提问于:2017-11-10 15:08
< >
分享
最佳答案
0

慢慢来吧.网上那些文章看着是觉得有道理.

然后依照着做发现真是S-B.然后慢慢就自己总结出一套理解.

ioc用配置文件写个要注入的类名的都是新手/菜鸟/误人子弟,

想对IOC有深刻理解.推荐看Orchard项目.非常非常牛逼.

要理解ioc有2个要点.一个是解耦.一个是对象生命周期管理.

第一个新手已经很难理解.第二个老手都没几个有概念.所以大部分吹ioc的人其实都不懂ioc到底怎么用才好.

奖励园豆:5
吴瑞祥 | 高人七级 |园豆:29449 | 2017-11-10 15:53

xiexie 回复。

Allen_Chang | 园豆:101 (初学一级) | 2017-11-10 15:56
其他回答(3)
0

很多情况下这个东西毫无用处,不要因概念而概念。

反射创建和new创建你说说又什么区别,只不过它要解决比如作用域等问题,因此又会产生不同的函数和参数。

适当的配置我认为好的code;过度的配置那不如直接放在代码中,尤其那些在自己应用中根本不需要参数化的配置。

花飘水流兮 | 园豆:13617 (专家六级) | 2017-11-10 15:31

 谢谢回复

支持(0) 反对(0) Allen_Chang | 园豆:101 (初学一级) | 2017-11-10 15:56
0

用不用,都行。

个人理解的IoC解耦。

Controller IService Service

具体实现在 Service ,但是 Controller 只需要依赖 IService,不依赖于具体实现。

刘文天 | 园豆:223 (菜鸟二级) | 2017-11-10 16:40
0

IOC,依赖注入,和new一个对象确实比较像,但是IOC是单例的,IOC的对象是放在容器中的,可以直接拿来使用,节约了对象创建以及销毁的时间,而且单例也有很多其他的好处.

雾里看花的少年 | 园豆:204 (菜鸟二级) | 2017-11-12 18:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册