IOC设计原则和核心思想

浏览了很多描述IOC的文章,然而真正IOC解决了什么痛点,大家知道?面试官经常会问道IOC是什么?可能大家一想到的就是英文全拼(Spring 中的IOC英文意思是 Invoke Of Convert (控制反转))而脱口答道 --控制反转,面试官接着问道 控制反转是什么,可能大家会说IOC是一个容器,但是真正的IOC是用来干什么的,以及这种设计思想的出现是在什么场景下演化来的,我想很少人能说的出来!
first:我们来先看下百度百科:
https://baike.baidu.com/item/控制反转/1158025?fr=aladdin
在这里插入图片描述

控制反转是一种设计原则,而依赖注入DI是它的一种实现方式;
技术描述:
Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。
采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中。而具体获取的方法、对象被获取时的状态由配置文件(如XML)来指定。

这样就解决了依赖方不需要主动去指定引用那一个具体的依赖,而是取决于业务实现,在应用程序的层面去决定具体依赖那一个类或者组件,将依赖的控制权交给了容器,程序层面去控制,我服务消费者(需要调用服务的类)不需要去指定具体依赖哪个类,而是靠XML配置文件的方式去解耦,这也符合了面向接口编程的基本原则,我不需要去关注具体依赖哪个类,方便服务实现的切换,我想最早的场景,就是手动去修改服务器的XML文件,而避免了去修改代码,再重新编译,部署的尴尬;
演变历程:
在这里插入图片描述
具体的文章大家可以去看下这位博主的文章:https://www.cnblogs.com/xinhuaxuan/p/6128523.html,很值得推荐,相比许多侃侃而谈的文章,这篇算是真知灼见了!
IOC 的常见实现方式:
构造注入;属性注入,和自动装配@Autowired

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值