(转)控制反转

 

https://baike.baidu.com/item/%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%AC/1158025?fr=aladdin编程

 

 

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,能够用来减低计算机代码之间的耦合度。其中最多见的方式叫作依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。经过控制反转,对象在被建立的时候,由一个调控系统内全部对象的外界实体,将其所依赖的对象的引用传递给它。也能够说,依赖被注入到对象中。框架

 

 

 

重点:函数

一、在过去,反射编程方式相对于正常的对象生成方式要慢10几倍,这也许也是当时为何反射技术没有广泛应用开来的缘由。但经SUN改良优化后,反射方式生成对象和一般对象生成方式,速度已经相差不大了(但依然有一倍以上的差距)。 
优化

 

二、spa

现有的框架实际上使用如下三种基本技术的框架执行服务和部件间的绑定:
  1. 类型1 (基于接口): 可服务的对象须要实现一个专门的接口,该接口提供了一个对象,能够重用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。
  2. 类型2 (基于setter): 经过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。
  3. 类型3 (基于构造函数): 经过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。  

三、设计

IoC是一个很大的概念,能够用不一样的方式实现。其主要形式有两种:
  • 依赖查找:容器提供回调接口和上下文条件给组件。EJB和Apache Avalon 都使用这种方式。这样一来,组件就必须使用容器提供的API来查找资源和协做对象,仅有的控制反转只体如今那些回调方法上(也就是上面所说的 类型1):容器将调用这些回调方法,从而让应用代码得到相关资源。
  • 依赖注入:组件不作定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象经过JavaBean属性或者构造函数传递给须要的对象。经过JavaBean属性注射依赖关系的作法称为设值方法注入(Setter Injection);将依赖关系做为构造函数参数传入的作法称为构造器注入(Constructor Injection)
相关文章
相关标签/搜索