• 通俗的讲,就是高层模块定义接口,低层模块负责实现。 Bob Martins对DIP的定义: 高层模块不应依赖于低层模块,两者应该依赖于抽象。 抽象不不应该依赖于实现,实现应该依赖于抽象。


    通俗的讲,就是高层模块定义接口,低层模块负责实现。

    Bob Martins对DIP的定义:

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

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

    总结出使用DIP的优点:

    系统更柔韧:可以修改一部分代码而不影响其他模块。

    系统更健壮:可以修改一部分代码而不会让系统崩溃。

    系统更高效:组件松耦合,且可复用,提高开发效率。

    DIP是一种 软件设计原则,它仅仅告诉你两个模块之间应该如何依赖,但是它并没有告诉如何做。IoC则是一种 软件设计模式,它告诉你应该如何做,来解除相互依赖模块的耦合。控制反转(IoC),它为相互依赖的组件提供抽象,将依赖(低层模块)对象的获得交给第三方(系统)来控制即依赖对象不在被依赖模块的类中直接通过new来获取

    控制反转(IoC)一种重要的方式,就是将依赖对象的创建和绑定转移到被依赖对象类的外部来实现

    依赖注入(DI),它提供一种机制,将需要依赖(低层模块)对象的引用传递给被依赖(高层模块)对象.

    方法一 构造函数注入

    构造函数函数注入,毫无疑问通过构造函数传递依赖。因此,构造函数的参数必然用来接收一个依赖对象。

    方法二 属性注入

    顾名思义,属性注入是通过属性来传递依赖。

    方法三 接口注入

    相比构造函数注入和属性注入,接口注入显得有些复杂,使用也不常见。具体思路是先定义一个接口,包含一个设置依赖的方法。然后依赖类,继承并实现这个接口。

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

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

    DIP是软件设计的一种思想,IoC则是基于DIP衍生出的一种软件设计模式。DI是IoC的具体实现方式之一,使用最为广泛。IoC容器是DI构造函注入的框架,它管理着依赖项的生命周期以及映射关系。

    抄自 http://www.cnblogs.com/liuhaorain/p/3747470.html

  • 相关阅读:
    python进程同步,condition例子
    python管道pipe,两个进程,使用管道的两端分别执行写文件动作,带锁(lock)
    无论怎样,拒绝了
    这两天发现又到了写无可写的地步
    用Perl编写Apache模块
    技术开发团队的项目管理工具
    *nix下传统编程入门之GCC
    当kfreebsd 用户遇见openSUSE系统
    kFreeBsd 国内开源镜像站汇总
    [转]编程语言与宗教
  • 原文地址:https://www.cnblogs.com/Fred1987/p/5999384.html
Copyright © 2020-2023  润新知