请教IOC的应用场景

ayun00 2020-03-01 08:43:54
首先说明一下, 本人经历的大型复杂项目比较少
用的多的一直是三层架构, 然后是三层架构+MVC
现在在研究IOC , 看了下网上一些autofac 的例子

感觉这个和工厂模式差不多啊
都要是使用接口+反射

有没有大佬,能帮我梳理梳理

它和工厂模式的不同 ,先进在哪里?
...全文
1447 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2020-03-09
  • 打赏
  • 举报
回复
至于,你说工厂模式和ioc比较的话。 我觉得不是一个层面的。 我可以认为 Ioc通过工厂模式来实现。 但是我也可以认为,ioc通过别的模式来实现, 因为他很多是属于动态代理。
正怒月神 2020-03-09
  • 打赏
  • 举报
回复
在另一篇,回答过了。我就沾过来了。 我觉得你对依赖注入的理解有些问题。 我个人感觉,依赖注入和几个类之间的耦合并没有太多关系。 我说说自己的理解。 1 控制反转(ioc)和依赖注入(di)。 我个人认为,控制反转是概念。依赖注入是它的实现。 其实这个没什么好特别纠结的。 2 依赖注入的常用三种做法 属性注入,构造器注入,注解注入。 这三个,是依赖注入的具体实现方案。 3 谁来帮你完成。 其实有一个容器,来帮你完成注入过程。 通过上面3种注入方式, 你会从以前的 IMilk m=new AMilk,变成:IMilk m; 然后,容器会帮你管理和生成a的实例。 4 好处 说实话吧,我感觉好处呢,是有的。 但是要看项目。 一般来说,中小型项目,其实并没有特别明显的好处。 我们假设你现在有一个 接口 IMilk,实现类 AMilk。 这是提供给A牛奶厂的底层实现。 现在要给B牛奶厂的底层也实现了。那么你会实现BMilk。 如果不适用ioc的概念,那么你要去底层,或者每个service等等的地方,修改 IMilk m=new BMilk(); 但是使用后,你只需要(甚至不用)修改一个配置文件,就可以了。因为你的代码中,都是 IMilk m;
ayun00 2020-03-08
  • 打赏
  • 举报
回复
引用 3 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:
[quote=引用 2 楼 ayun00 的回复:] [quote=引用 1 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:] 场景 (1)应用程序框架 (2)支持插件扩展的程序 (3)程序热升级/部分升级 (4)一套程序匹配不同的底层实现 (5)AOP编程
这些使用工厂模式也可以实现啊?[/quote] 是啊。 你说C#可以开发什么程序。我说桌面啦、web啦等等,然后你说这个Java也可以。 我也没说不可以啊。你的意思是有了Java,C#没有存在的意义?或者C#必须要有什么超过Java的地方它才能算C#?还是想说什么?[/quote] 我不是说不能有多种方法实现。 我想表达的是, 我无法区分它们之间的区别,在概念上我很混乱
Jlion8 2020-03-02
  • 打赏
  • 举报
回复
你先看下我昨天分享的IOC的概念和如何解偶的优势我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《ASP.NET CORE 内置的IOC解读及使用》, 一起来围观吧 https://blog.csdn.net/a312586670/article/details/104596918 你这样会有一定的认识
极客诗人 2020-03-01
  • 打赏
  • 举报
回复
就是以前主动new 现在交给框架。。
threenewbee 2020-03-01
  • 打赏
  • 举报
回复
引用 2 楼 ayun00 的回复:
[quote=引用 1 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:]
场景
(1)应用程序框架
(2)支持插件扩展的程序
(3)程序热升级/部分升级
(4)一套程序匹配不同的底层实现
(5)AOP编程

这些使用工厂模式也可以实现啊?[/quote]

是啊。

你说C#可以开发什么程序。我说桌面啦、web啦等等,然后你说这个Java也可以。
我也没说不可以啊。你的意思是有了Java,C#没有存在的意义?或者C#必须要有什么超过Java的地方它才能算C#?还是想说什么?
ayun00 2020-03-01
  • 打赏
  • 举报
回复
引用 1 楼 贵阳老马马善福专业维修游泳池堵漏防水工程 的回复:
场景 (1)应用程序框架 (2)支持插件扩展的程序 (3)程序热升级/部分升级 (4)一套程序匹配不同的底层实现 (5)AOP编程
这些使用工厂模式也可以实现啊?
threenewbee 2020-03-01
  • 打赏
  • 举报
回复
场景
(1)应用程序框架
(2)支持插件扩展的程序
(3)程序热升级/部分升级
(4)一套程序匹配不同的底层实现
(5)AOP编程

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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