大话DI依赖注入+IOC控制反转 之 定义
Posted lonelyxmas
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话DI依赖注入+IOC控制反转 之 定义相关的知识,希望对你有一定的参考价值。
原文:大话DI依赖注入+IOC控制反转(一) 之 定义转发时请注明原创作者及地址,否则追究责任。原创:alunchen
依赖注入与控制反转
依赖注入与控制反转是老生常谈的问题。一般面试也会面试到这种问题。网上很多很多这方面的资料,搜索出来一大堆。
下面我们大话一下这些个定义。
DI依赖注入
依赖注入既依赖,又注入。依赖的是容器,注入的也是容器,把你的对象放入容器,并且依赖于容器。
IOC控制反转
控制反转,意思是对象的创建由容器来确定。
在我们开始接触编程时,一般都是通过new来创建对象。这种做法有什么缺点呢?提高了创建对象时的耦合度、创建对象时的不统一。那么我们如果降低耦合度、统一地创建对象呢?
通过工厂方法来创建对象可以吗?通过工厂的确可以实现我们的目的。工厂模式,我们已经开始接触控制反转中的‘反转’了。因为对象不是我们创建,都是有工厂来创建。说到反转,其实我们在写代码时,有用到方法间的调用,都是使用‘反转’。封装都会用到反转,下面用白话说清楚一点。
反转第一次听比较难理解,其实说白了,就是原来你控制的逻辑、对象,变成交由第三方控制。如你创建了一个公共方法,提供RSA加解密。调用加密时,我们只需要提供一个钥匙与明文就能返回一个密文,不需要知道实现的逻辑。这就是反转,不是我们控制。
再聊聊控制反转的进化史。
随着对象的增多,工厂模式显得很‘累赘’,因为每个对象都需要自己写个方法甚至类去创建。
这时候,容器的想法出现了。用容器装载所有的对象,需要此对象时从容器取出即可。不需要管理对象。
可以关注本人的公众号,多年经验的原创文章共享给大家。
以上是关于大话DI依赖注入+IOC控制反转 之 定义的主要内容,如果未能解决你的问题,请参考以下文章
Spring 之 控制反转(IoC), 依赖注入(DI)和面向切面(AOP)