DI,IOC具体的作用

我2我骄傲 2017-11-10 02:43:58
看了很多文章,千篇一律全是 解释什么是 依赖注入 什么是控制反转,都说是为了解耦,但是并没有说 优势 怎么解耦法。

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

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

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

理解的不深,请赐教。谢谢各位!
...全文
274 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
万年锋刀 2019-05-26
  • 打赏
  • 举报
回复
贴住和我遇到同样的 问题我看到很多文章关于 IOC 和DI的都是为了 DI而DI 并不知道他们究竟要干什么 如果一个接口只有一个实现为什么要DI 我想DI绝对没有直接new的效率高吧,还有如果是为了换不同的仓储 完全可以通过一个配置文件加工厂来实现
SayHello_XXXX 2017-11-14
  • 打赏
  • 举报
回复
你已经做完一个系统了 然后又有一个需求方要求的和你上个系统一样只是数据库很奇葩没啥人用的 而你上一个项目用的是ef连接 现在这个只能用oledb 这时候你只要实现接口 然后ioc创建对象的时候修改下配置 其他什么都不用改就可以
圣殿骑士18 2017-11-13
  • 打赏
  • 举报
回复
我非常不赞同无目的的使用框架,对于DI,IOC,我的项目里几乎没有使用过。为什么?不是我排斥它们,而是没有它们发挥用处的地方。 如果我的开发基于.net mvc,那么它已经内置了IOC和AOP,我没有必要自己搞。即使如此,我其实在项目里,都还没使用上mvc的切面编程(比如记录通用日志),因为用不到。 我唯一一个项目,用上了unity,是因为它是基于winform的,项目产生了性能问题,用户反馈系统很慢,但我又不知道到底哪里慢导致的问题,所以我想监控一下所有的关键方法,看它们的执行时间有没有超出预期。所以我才用unity。 以上综述,作为追求开发简约化和极致效率的人,我坚持奥卡姆剃刀原则「如无必要,勿增实体」,而要增加某个功能,必须是“没有它就没法很好的解决我碰到的问题”的情况下,才会使用。
  • 打赏
  • 举报
回复
引用 2 楼 jmlovews 的回复:
你这个 IxxxBLL 接口 的实现 唯独一个,如果你有多个 都能理解, 但是 每个接口的实现类只有一个。。。 看不出意义。
当然你说的这个是个很实际的情况,也正如楼上所说,其实不是很有必要来进行注入,但谁又能保证将来不会因为项目需要去写一个新的实现呢?反正用ioc的成本说白了并不高,用了还能提升一下逼格,何乐而不为呢
  • 打赏
  • 举报
回复
你只看到了构造注入的地方,没看到注册的地方,本来注册的是A实现,现在要改成B实现,那你一个个去new的地方改多费事,注入后只要在注册的地方将原来注册为A的现在改为注册成B
wanghui0380 2017-11-13
  • 打赏
  • 举报
回复
水涨船高,没到那个程度别强追。 强追的结果是 DDD等于“仓储”,TDD等于测试,分层等于petshop,性能等于不用EF,不用string+string,left join就是无敌 至于为啥那么写,还就是你说的我们不想new,new就意味着你必须知道new谁,问题来了,我现在就是不知道new谁。因为是多人开发,写那块的人都还木写,我怎么办?那就假装他写了把。 当然你下的那些例子,本身就是强追的结果,他并不知道怎么去解耦,他只是认为这样就解耦了而已,就等于我上面说的他们认为我用了仓储所以我是ddd,我单元测试使用我是tdd,你用ef所以效率低下,你string+string老天都不饶过你
sdfgrtyu 2017-11-13
  • 打赏
  • 举报
回复
不明白的话可以报个补习班啊,,,,
sdfgrtyu 2017-11-13
  • 打赏
  • 举报
回复
哪里不明白啊。
我2我骄傲 2017-11-10
  • 打赏
  • 举报
回复
顶一下。11111
我2我骄傲 2017-11-10
  • 打赏
  • 举报
回复
你这个 IxxxBLL 接口 的实现 唯独一个,如果你有多个 都能理解, 但是 每个接口的实现类只有一个。。。 看不出意义。
我2我骄傲 2017-11-10
  • 打赏
  • 举报
回复
补充一下 很多 开源项目这样写 接口 IxxxBLL 然后业务层 xxxBLL: IxxxBLL 然后用第3方工具 注入到容器 然后再需要的地方 比如 controller IxxxBLL xx; xxx(IxxxBLL yy) { xx = yy; } 不明白 我直接new 跟你这有啥区别。。。别说什么 要遵守 依赖倒置这些。。。就问 有啥优势。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧