深入理解IOC和DI的区别

什么是IOC?
在Spring中最出名的两个概念莫过于IOC和AOP了吧,只要是学过Spring的人都知道,即使很出名,很多人也大概知道,那么面试的时候你是否能够说出来呢?相信很多人都对IOC和DI都大概理解,但是要你说的话就很模糊了

IOC是一种程序设计的思想(控制反转),并不是什么技术,用来管理我们程序中的对象和对象之间的依赖关系,如果不用IOC容器,那么程序中所有对象的依赖关系都需要我们自己管理,所有依赖对象都有我们自己创建。我们来看看这种方式的不足。

  1. 所有对象都由我们自己创建,即面向实现类编程,造成程序耦合太高,不利于后期维护
  2. 随着程序的功能越发强大,类越多,依赖关系就越复杂,导致后期基本没人能够彻底弄清楚对象之间的依赖关系

如果我们使用IOC容器就能轻而易举的解决这些问题,对象的创建销毁依赖关系都交给IOC去管理,我们只需要关注业务本身即可,这样做的话,我们的对象与对象之间就没有直接的关系了,而是所有对象都依赖于IOC容器,如果我们要使用某个类的实例只需去IOC容器中拿,IOC会帮我们管理、注入我们依赖的对象,解决了类与类之间的耦合,依赖关系也变得清晰可见

  1. 那么到底是谁控制了谁?当然是IOC控制了我们程序中的对象,
  2. 控制了什么?对象的创建与销毁,,其实就是把对象的生命周期交给IOC了
  3. 反转了什么?即获得依赖关系的过程,以前我们对象中需要依赖另一个对象,都需要我们自己创建,而使用IOC这一切都交给了IOC容器管理,IOC容器会自动帮我们管理对象以及注入对象中需要的依赖,

DI 依赖注入(IOC的别名)其实DI就是IOC的别名,其概念跟IOC一样,只是从不同的角度去描述,2004年Martin Fowler(马丁福勒)提出IOC即为控制反转那么到底反转了什么?通过分析和论证最后得出结论,即反转了获得依赖关系的过程

说的可能不好,多多包含了,,,,,

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值