ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

浅谈IOC

2020-03-15 11:42:13  阅读:168  来源: 互联网

标签:容器 依赖 浅谈 对象 反转 IOC 注入


ioc是什么

IOC是Inversion of Control的缩写,中文叫做“控制反转”。

其思想是反转资源获取的方式。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC后,则是容器主动的将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接收这个资源,这种行为也被称为查找的被动形式。

简单来说就是把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

下面通过以下例子来进行说明:

由上图可知,ABCD四个对象没有耦合关系,他们通过第三方(也就是IOC容器)相互依靠。全部对象的控制权都在IOC容器上,它是整个系统的关键核心,将系统中的对象全部关联起来发挥作用。

如果没有IOC容器会怎样?

由第二章图片可知,ABCD四个对象之间现在是没有关系的,当时使用A时,不需要考虑其他,他们之前的依赖消失了。如果你想在A中使用B,那么久需要自己制造这种依赖。而系统的中依赖是及其复杂和多样的。出现的ioc容器不仅能解决耦合问题,还能让开发人员只要负责好自己的类即可,不比考虑和其他类的关系,这对于开发来说是及其方便的。

DI--IOC的另一种表述方式:即组件以一些预先定义好的方式(例如:setter方法)接受来自如容器的资源注入,相对于IOC而言,这种表述更加的直接。

DI又是什么呢?

2004年,Martin Fowler探讨了同一个问题,既然IOC是控制反转,那么到底是“哪些方面的控制被反转了呢?”,经过详细地分析和论证后,他得出了答案:“获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。于是,他给“控制反转”取了一个更合适的名字叫做“依赖注入(Dependency Injection)”。他的这个答案,实际上给出了实现IOC的方法:注入。所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。

(我的理解是IOC是一种控制反转的思想,而DI是实现控制反转的方式)

所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦。

 

参考文章:https://blog.csdn.net/ivan820819/article/details/79744797

标签:容器,依赖,浅谈,对象,反转,IOC,注入
来源: https://blog.csdn.net/wangyunzhao007/article/details/104875283

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有