所以IOC的好处,就是分成三个阶段来看,离不开接口和实现的设计模式。
第一,统一第三方服务的参数和返回值,抽像出来接口。
第二,将原来方法中对接口实例化的代码剥离出来到构造函数中。
第三,通过配置文件,可以做到改变实现类,而不改变任何一个调用者的代码(IOC)。
想想,这个时候如果更换短信通道,只需要写好新的短信通道实现类,更改配置文件,就可以完成老板要的功能,不会有任何的风险(即便是有风险,也可以通过单元测试来完成,我只修改我单独独立的实现类)
老板会不给你升职加薪么?
不会,老板只会给你分配下一个任务。。
IT修真院一直在尝试着将一些问题讲的简单透彻,并给出思考的角度。
最近这小半年已经贡献了不少这种答案,先从基础的一些概念入手,慢慢再引入相对高级的知识。
更是希望将一些好的思维方式,和坏的学习习惯总结出来。
很都在问我零基础怎么学习,其实学习的关键点,并不是只在于自己是否是零基础,更重要的是,你是否有一个高效的学习方法?
如果你喜欢听这样的分析,喜欢尝试这种学习方法。
欢迎关注~
虽然我是暗灭大人的小分身,可是很少用这个账号怼人的呦~
App 内查看
回答有点跑题了,我回答的是为什么重要
好处主要是解耦,然后让大家养成面向接口编程的习惯(但很多时候也不是注入接口的了)。
简单理解你就是一个富二代,你要什么不需要自己操心,开口就行,你的富爸爸(ioc容器)都给你包办了!爽不爽?
再具体一点,你对老爸说,我要一辆车,车就是接口Car,你老爸给了你一辆B字头的车,可能是比亚迪,也可能奔驰,比亚迪和背驰就是接口Car的具体实现,而你不需要知道具体是什么车,只需要知道是车就可以了。
------------------------以下为原答案----------------
这点我有体会,说说自己的感受,刚刚开始学ioc的时候,首先觉得简单,代码简单,用起来也简单,但是最大的疑惑是为什么我明明一行代码就可以完成的,现在要这么麻烦来实现?还有一堆配置文件?
后面看了很多资料,加上自己的理解,我觉得ioc第一个好处是解耦,让大家养成面向接口编程的习惯。但这不是最重要的,最重要的控制了对象的创建,这才是最重要的地方!你想想,我们就是面向对象编程,什么最重要,对象啊!ioc控制了对象的生老病死,就等于控制了一切!
有了ioc,才有其他,如AOP,就是在给你对象的时候,加了其他功能,就好比给了你一个听命于他的啊!没有ioc这些都无从说起!
App 内查看
废话1:有的朋友可能把依赖倒置(DIP)和依赖注入(DI)弄混了。
《敏捷软件开发》第11章:
依赖倒置原则
a.高层模块不应该依赖于底层模块,二者都应该依赖于抽象。
b.抽象不应该依赖于细节,细节应该依赖于抽象。
可见,依赖倒置的本质是依赖抽象,这与依赖注入的本质依赖容器,是两回事。
换句话说,如果Java没有接口、多态,依赖倒置就无从谈起。
而依赖注入依然可以存在,只要有一个注册表(《企业应用架构模式》第18章第5节)定义bean,利用反射来实例化并装配bean,有个容器容纳它们即可。
废话2:还有的朋友可能把控制反转(IoC)和依赖注入(DI)混为一谈了。

《EXPERT ONE ON ONE J2EE DEVELOPMENT WITHOUT EJB》第6章:
IoC主要的实现方式有两种:依赖查找,依赖注入。spring ioc是什么意思(128页)
依赖注入是一种更可取的方式。(130页)
Inversion of Control Containers and the Dependency Injection pattern
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-94388-9.html
我之前买过花茶
倒是身边守着世界最大的市场
无论是民间还是当官的都滋长了一种戾气