DI与IOC

前言

在对spring回顾中,这两个术语贯穿spring的整个体系,之前没有进行深入理解和探讨,这里作为总结和记录。

理解

控制反转(Inversion of Control)和依赖注入(Dependency Injection)是同一个实现的不同面,这里用spring做参考。

  • 为什么要使用

参考:http://insights.thoughtworkers.org/injection/,Martin Fowler大师的描述已经很简单很完善了

  • 实现了什么

通过控制反转将每次主动new创建对象的方式交给 IOC 来操作,具体来说是spring框架中的ioc容器来管理,再通过依赖注入的手段将合适的实例或者其子类实例注入到需要的对象中(成为其某一个字段),由此实现整个逻辑中依赖对象的创建和调用。

  • 解决了什么

通过 IOC 解决了对象间的耦合问题,这是最重要的,其次才是对象的管理

  • 控制反转(Inversion of Control)

控制主要是针对对象的创建、销毁等整个生命的周期的管理控制,

反转是控制权的反转,本来手动控制对象创建等操作交给IOC来自动管控,由IOC容器来控制整个对象的生命周期,

通过IOC,我们不需要关系对象的创建,我们需要的时候主动找IOC获取即可,丧失了创建对象、管理等的权力,获得了不用考虑对象耦合、管理的问题好处。

  • 依赖注入(Dependency Injection)

DI和IOC描述的同一样事情,只不过所站的角度不同

       IOC:所站的是对象角度,对于对象而言,IOC实现了对象的控制权反转,将控制权交给了IOC容器

       DI:所站的是IOC容器角度,对于容器而言,如果对象A依赖于对象B,容器就会将对象B注入到对象A中

参考资料

Martin Fowler:https://martinfowler.com/articles/injection.html

Martin Fowler中文翻译:http://insights.thoughtworkers.org/injection/

大白话:https://juejin.im/post/5961bd955188250da35f05d7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值