前言
依赖注入这个词,我是在前段时间玩Window Phone 7 时发现的。后来在Enterprise 5中也发现了,在Enterprise 5说是该模式的引用是重大改进。一直都比较忙,没有空有研究这个东西。它到底是什么东西,说白了,是一种设计模式。
什么是依赖注入
“allows you to inject objects into a class,rather than relying on the class to create the object itself.”
简单的说,类A要使用类B的对象 :采用B的实例传入(注入)类A,而不是在类A中创建类B的对象。
使用这种方式,我们可以看出,A中使用类B不再依赖于显示创建(也就不依赖于B,从而达到松耦合的目的)。通常的实现方式:通常使用接口实现,让类A依赖于接口(B实现了该接口)
控制反转
谈到依赖注入必然就会说到“控制反转”(Inversion of Control Containers),简单地说,“依赖关系的转移,表现在高层模块不应依赖于底层模块,而模块都必须依赖于抽象;实现必须依赖于抽象,而不是抽象依赖于实现;应用程序不应该依赖于容器,而容器应该服务于应用程序。”
不打算往下写
看了一篇东西,写得很到位。文章结构如下,清楚的讲了DI的产生背景与演进过程。我想现在只需要分享,暂时不往下写。文章目录结构如下:
目录
1 IGame游戏公司的故事
1.1 讨论会
1.2 实习生小李的实现方法
1.3 架构师的建议
1.4 小李的小结
2 探究依赖注入
2.1 故事的启迪
2.2 正式定义依赖注入
3 依赖注入那些事儿
3.1 依赖注入的类别
3.1.1 Setter注入
3.1.2 Construtor注入
3.1.3 依赖获取
3.2 反射与依赖注入
3.3 多态的活性与依赖注入
3.3.1 多态性的活性
3.3.2 不同活性多态性依赖注入的选择
4 IoC Container
4.1 IoC Container出现的必然性
4.2 IoC Container的分类
4.2.1 重量级IoC Container
4.2.2 轻量级IoC Container
4.3 .NET平台上典型IoC Container推介
4.3.1 Spring.NET
4.3.2 Unity
参考文献
原文地址:《依赖注入那些事儿》http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html
附注:
1. 参考《Inversion of Control Containers and the Dependency Injection pattern》,Martin Fowler,23 January 2004.
2. 《Dependency Injection》
原文链接:https://www.f2er.com/javaschema/287094.html