依赖注入/控制反转学习笔记

最近在学习js的开发框架好比AngularJS、Meteor、Backbone等,这些框架的一个特色就是依赖注入,由于一直对这个概念云山雾罩,因此特地花时间学习了一下,把学习笔记写在这里。html

------------------------------------------------------------------------
框架

控制反转(IoC:Inversion of Control)函数

依赖注入(DI:Dependency Injection)学习

控制反转是Java一些开发框架的核心(以Spring为表明),随着对这种模式的讨论愈来愈热烈,一位大牛Martin Fowler写出了一篇深具影响力的文章《Inversion of Control Containers and the Dependency Injection pattern》不光深刻探讨了控制反转这个模式还提出一个更贴切的称呼---依赖注入,控制反转和依赖注入实际上是等价的,只不过强调的方面不一样。ui

IOC控制反转:说的是建立对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。spa

DI依赖注入:说的是建立对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
.net


Martin的文章也有被翻译成中文版翻译


国内某位大牛在Martin的文章之上写的解读unix


其余一些文章(目前正在看,但还没看懂)xml

Spring框架中IOC控制反转和DI依赖注入区别       

控制反转与依赖注入  

Object Builder Application Block(中文)


目前大概有三种依赖注入的方式:

类型1 (基于接口): 可服务的对象须要实现一个专门的接口,该接口提供了一个对象,能够从用这个对象查找依赖(其它服务)。早期的容器Excalibur使用这种模式。

类型2 (基于setter): 经过JavaBean的属性(setter方法)为可服务对象指定服务。HiveMind和Spring采用这种方式。

类型3 (基于构造函数): 经过构造函数的参数为可服务对象指定服务。PicoContainer只使用这种方式。HiveMind和Spring也使用这种方式。

相关文章
相关标签/搜索