依赖注入概论

来源:互联网 发布:软件开发委托合同 编辑:程序博客网 时间:2024/05/17 20:11

前言

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