zoukankan      html  css  js  c++  java
  • 深入理解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/

     

  • 相关阅读:
    C语言I博客作业09
    请看这里
    C++ 面向对象学习笔记[1]
    graphviz的使用
    KDE安装后的一些随笔
    近期内容整理
    链表
    理解C++ lvalue与rvalue
    再看“笕实智慧校园”——作品的复盘[1]
    无题
  • 原文地址:https://www.cnblogs.com/liwenchaoCode/p/7055429.html
Copyright © 2011-2022 走看看