依赖注入概论

前言

依赖注入这个词,我是在前段时间玩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

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...