Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection 控制反转与使用选定引号的依赖注入–;我的理解正确吗?_Dependency Injection_Inversion Of Control - Fatal编程技术网

Dependency injection 控制反转与使用选定引号的依赖注入–;我的理解正确吗?

Dependency injection 控制反转与使用选定引号的依赖注入–;我的理解正确吗?,dependency-injection,inversion-of-control,Dependency Injection,Inversion Of Control,我已经阅读了许多解释IoC和DI之间差异的文章,虽然许多解释相互矛盾,但我认为它们仍然帮助我理解了差异 所以在这里,我想问一下我的理解是否正确,以及我的文章摘录是否对我有所帮助(尽管其中有些相互矛盾) 我知道已经有很多关于这个主题的帖子了,但是我希望这个帖子不会被关闭,因为我不认为上面提到的帖子中的任何一篇文章也展示了帮助他们最终理解它的所有相关帖子(来自不同的帖子) 无论如何,以下是我的理解(如果可能,请分别回答/回答每个问题): a) 当我们在框架级别应用DIP原则时,我们使用术语IoC?在

我已经阅读了许多解释IoCDI之间差异的文章,虽然许多解释相互矛盾,但我认为它们仍然帮助我理解了差异

所以在这里,我想问一下我的理解是否正确,以及我的文章摘录是否对我有所帮助(尽管其中有些相互矛盾)

我知道已经有很多关于这个主题的帖子了,但是我希望这个帖子不会被关闭,因为我不认为上面提到的帖子中的任何一篇文章也展示了帮助他们最终理解它的所有相关帖子(来自不同的帖子)

无论如何,以下是我的理解(如果可能,请分别回答/回答每个问题):

a) 当我们在框架级别应用DIP原则时,我们使用术语IoC?在框架级别实现DIP的机制之一是DI

b) 当我们在较低级别/非框架级别实施DIP(使用DI)时,术语IoC不适用,在这种情况下,我们简称之为DI

c) DI通过将依赖项的实际创建和选择的控制权交给第三方,而该第三方与其他两方中的任何一方无关,从而帮助我们实现DIP

d) 当在框架级别(IoC)应用DIP时(使用DI),则三种类型的控制会反转:

  • 接口的控制。现在高级模块控制低级模块需要遵守的接口,而不是相反

  • 流的控制。-->现在框架代码(而不是用户/业务代码)控制程序的流(换句话说,他们(ie框架)调用您(ie业务代码))

  • 依赖项创建的控制。此反转将实际创建和选择依赖项的控制权传递给第三方,该第三方对其他两个相关方都是中立的

  • e) 当在非框架级别应用DIP时(使用DI),则两种类型的控制会反转:

  • 接口的控制。现在高级模块控制低级模块需要遵守的接口,而不是相反

  • 依赖项创建的控制。此反转将实际创建和选择依赖项的控制权传递给第三方,该第三方对其他两个相关方都是中立的

  • ?

    以下是有帮助的摘录:

    控制反转是通用术语。依赖注入是一种 国际奥委会的具体类型

    控制反转是指框架/基础设施调用 应用程序代码,而不是相反

    可以做DI而不做IoC。如果将StringWriter注入到 HelloWorld我真的不认为这是国际奥委会,因为没有 “框架”或“基础设施”

    国际奥委会是改变合同执行情况的能力。DI是 提供实施的能力

    在传统应用程序中,开发人员会编写业务代码和 框架代码。然后,业务代码将调用框架代码 完成任务。在IoC模型下,您可以“反转”该模型 创建一个接受业务模块并将其调用到的框架 完成任务

    依赖注入是一种技术(很难称之为模式, 实际上)通过 允许依赖对象通过 外部呼叫者。IoC框架使用依赖注入来提供 用户模块和其他依赖于框架例程的代码“粘合” 依赖注入被IoC大量使用 框架,因为这是允许他们“调用 你。”

    DIP是指导我们走向DI的原则。基本上是松散的 耦合是目标,至少有两种方法可以实现它。 •依赖注入•服务定位器

    控制反转的本质(依赖注入就是其中之一) 实现)是将对象的使用与 其管理

    术语依赖注入(DI)和控制反转(IoC)是 通常可互换地用于描述相同的设计模式 (虽然不是每个人都同意这一点,而且有些人倾向于 以稍微不同的方式应用它们)。图案最初是 他打电话给国际奥委会,但马丁·福勒建议改为DI,因为 框架在某种程度上颠覆了控制权,他想变得更强大 具体说明控制的哪个方面被颠倒了

    控制反转(IoC)意味着对象不会创建其他对象 他们工作所依赖的对象。相反,他们得到了 从外部源(例如,xml)获取所需的对象 配置文件)。依赖注入(DI)意味着这已经完成 没有对象干预,通常由 传递构造函数参数并设置属性


    谢谢

    这是我的观点:

    DIP意味着您要针对抽象进行编程。将依赖关系的类型从实现转换为抽象

    IOC意味着其他人负责获取给定抽象的实现。通常,消费者会使用new关键字来获取依赖项。使用IoC,您可以反转控制,这样消费者就不会响应