深入理解Dip Ioc Di以及Ioc容器

学习  http://www.cnblogs.com/liuhaorain/p/3747470.html 

 

DIP 依赖倒置:  一种软件架构设计的原则(抽象概念)。

IOC控制反转:一种反转流、依赖和接口的方式(DIP的具体实现方式)。

DI依赖注入:IoC的一种实现方式,用来反转依赖(IoC的具体实现方式)。

Ioc容器:依赖注入的框架,用来映射依赖,管理对象创建和生存周期(DI框架)。

 

DIP   一种软件架构设计原则

依赖倒置原则:   底层模块依赖高层模块定义的接口      高层模块不受底层模块影响。  高层模块定义接口  底层模块负责实现高层模块定义的接口 。

高层模块不应依赖于低层模块,两者应该依赖于抽象。

抽象不不应该依赖于实现,实现应该依赖于抽象。

 

IOC 控制反转 软件设计模式

  控制反转  高层将依赖的底层对象的获得交给第三方来控制,即依赖对象不在被依赖对象内通过new方式获取。

 

 

软件设计原则:原则 提供指南,告诉我们对,错。它仅给准则,以便我们可以设计好的软件,避免不良的设计。一些常见的原则,比如DRY、OCP、DIP等。

软件设计模式:模式是在软件开发过程中总结得出的一些可重用的解决方案,它能解决一些实际的问题。一些常见的模式,比如工厂模式、单例模式等等。

 

依赖注入 有两种常用方式    依赖注入和服务定位。其中,依赖注入使用最为广泛

DI依赖注入   是一种机制 将需要依赖(底层模块)对象的引用传递给被依赖(高层模块)对象。

 

构造函数注入法:通过构造函数传递依赖。构造函数的参数必须有一个用来接收一个依赖对象,那么参数类型是? 高层模块不应该依赖底层模块,那就应该是一个抽象类。 所以构造函数应该有一个抽象参数来接收依赖。

属性注入:通过属性传递依赖

接口注入:高层次依赖模块  提供接口来完成  底层模块的注入。

 

 

 

前面几种方式,我们都是通过手动的方式来创建依赖对象,并将引用传递给被依赖模块。比如:

 

   

对于大型项目来说,相互依赖的组件比较多。如果还用手动的方式,自己来创建和注入依赖的话,显然效率很低,而且往往还会出现不可控的场面。正因如此,IoC容器诞生了。IoC容器实际上是一个DI框架,它能简化我们的工作量。它包含以下几个功能:

 

  • 动态创建、注入依赖对象。
  • 管理对象生命周期。
  • 映射依赖关系。

1. Ninjecthttp://www.ninject.org/

2. Castle Windsor:  http://www.castleproject.org/container/index.html

3. Autofachttp://code.google.com/p/autofac/

4. StructureMaphttp://docs.structuremap.net/

5. Unity:  http://unity.codeplex.com/

 

 6. MEFhttp://msdn.microsoft.com/zh-cn/library/dd460648.aspx

 

7. Spring.NEThttp://www.springframework.net/

8. LightInjecthttp://www.lightinject.net/

 

 

 

posted @ 2017-06-20 17:45  SoftSteven  阅读(242)  评论(0编辑  收藏  举报