知识大全 对IOC和DI的理解
Posted 知
篇首语:上下观古今,起伏千万途。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 对IOC和DI的理解相关的知识,希望对你有一定的参考价值。
对IOC和DI的理解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
首先说一下什么是IOC和DI IOC是Inversion of Control(控制反转)的简写 DI是Dependency Injection(依赖注入)的简写 martinfowler对IOC的解释为 Inversion of control is a mon characteristic of frameworks so saying that these ligheight containers are special because they use inversion of control is like saying my car is special because it has wheels
我想对这一概念进行一个个人的阐述 以方便我的理解 控制反转 从字面意思来看 就是控制权由被动变主动又变为被动 或被动变主动又变为被动 从这个角度来说 IOC就变得非常容易理解了
举个例子 你的主管要求你做一件事情 这个时候就存在这么几个过程
主管命令你做事情(这个时候主动权在主管 你是被动的)
你接到命令做事情(这个时候主题是你 你是主动的 控制权在你手里)
你完成事情(这个时候主题依然是你 控制权在你手里)
报告主管做完事情(主动权又叫交到主管手里了)
上面的整个过程就完成了一次IOC 从上面可以看出 IOC的基本思想是控制权的转换过程
举个代码的例子
假如有Class A Class B 在A内部会初始化一个B 调用B的一个方法DoMethod
public Class B
public void DoMethod()
/// do somthing
public Class A
public void Excute()
B b = new B()
b DoMethod()
假如在Main函数中如下执行
A a = new A()
a Excute()
从这两行代码来看 事实上也存在一个IOC的过程 a——>b——>a 理解的关键点就在在A的内部调用Excute的时候 方法b DoMethod的执行
理解了IOC 我们再看一下DI 从上面A调用B我们可以看出 在初始化一个A的实例时 也必须实例化一个B 也就是说如果没有B或者B出了问题 A就无法实例化 这就产生了一种依赖 就是A依赖B 这种依赖从设计的角度来说就是耦合 显然它是无法满足高内聚低耦合的要求的 这个时候就需要解耦 当然解耦有很多种方法 而DI就是其中一种 不管任何一种解耦方法 都不是说使A和B完全没有关系 而是把这种关系的实现变得隐晦 不那么直接 但是又很容易实现 而且易于扩展 不像上面的代码那样 直接new一个B出来 那为什么我们总是把IOC和DI联系到一起呢?是因为DI的基本思想就是IOC 而体现IOC 思想的方法还有另外一个 那就是Service Locator 这个方法好像涉及到的很少
DI 依赖注入 从字面意思就可以看出 依赖是通过外接注入的方式来实现的 这就实现了解耦 而DI的方式通常有三种
构造器注入
属性设置器注入
接口注入(我感觉接口注入是同时存在于上两种注入方式的 而不应该独立出来)
cha138/Article/program/net/201311/13304相关参考
用代码学习Spring:IoC、AOP 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
Spring控制反转(IoC)容器 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! (二)个人整理
平均趋向指标的交易法则1、当+DI13大于-DI13时,仅由多方进行交易。当-DI13大于+DI13时,仅由空方进行交易。最适合进场做多的时机是:+DI13与ADX都位在-DI13的上方,而且ADX上
Spring中IoC的入门实例详解 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Spring的
知识大全 Spring的IoC学习笔记之BeanFactoryPostProcessor
Spring的IoC学习笔记之BeanFactoryPostProcessor 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,
Spring中DI设置器注入 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java的反射机制可
SpringIOC配置与应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs
spring,ioc模式与ejb3的SLSB实现 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 轻量级IoC容器来扩展ANT享受SPRING(图)
轻量级IoC容器来扩展ANT享受SPRING(图) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 ASP.NET MVC 4框架揭秘:基于IoC的ControllerActivator[2]
ASP.NETMVC4框架揭秘:基于IoC的ControllerActivator[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发