Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 IoC适合计算引擎吗?_Dependency Injection_Inversion Of Control - Fatal编程技术网

Dependency injection IoC适合计算引擎吗?

Dependency injection IoC适合计算引擎吗?,dependency-injection,inversion-of-control,Dependency Injection,Inversion Of Control,我们正在构建一个计算引擎,其中有许多对象在执行计算时相互作用。对象之间有依赖关系,并且模仿真实世界系统的子集。我们正在以一种分阶段的方式构建计算引擎,在这种方式中,我们对系统的各个部分进行增量建模,因此,随着我们的进展,依赖关系图可能会发生变化。我们可以在代码中显式地声明对象之间的依赖关系,但这可能会导致将来不得不更改代码的该部分。使用国际奥委会能缓解这个问题吗?或者这会是一种过度杀伤力吗?应用依赖项注入有几种方法很有用: 它允许您抽象需要单独测试的代码。在您的例子中,您可能希望将计算引擎分成多

我们正在构建一个计算引擎,其中有许多对象在执行计算时相互作用。对象之间有依赖关系,并且模仿真实世界系统的子集。我们正在以一种分阶段的方式构建计算引擎,在这种方式中,我们对系统的各个部分进行增量建模,因此,随着我们的进展,依赖关系图可能会发生变化。我们可以在代码中显式地声明对象之间的依赖关系,但这可能会导致将来不得不更改代码的该部分。使用国际奥委会能缓解这个问题吗?或者这会是一种过度杀伤力吗?

应用依赖项注入有几种方法很有用:

  • 它允许您抽象需要单独测试的代码。在您的例子中,您可能希望将计算引擎分成多个部分,以便更容易地测试引擎的较小部分,或者抽象引擎内部使用的数据库引擎
  • 它允许多个团队开发该引擎。通过依赖于其他团队提供的抽象(或您为其他团队指定的抽象),它允许您取得进展,而不会被其他团队的进展所阻碍
  • 如果引擎包含必须可更改的较小部件(规范模式),则为这些部件注入抽象可以帮助实现这一点。如果只依赖于抽象,甚至可以在运行时执行此操作

  • 但是,如果这个计算引擎是由一个团队开发的,对任何需要抽象的东西(数据库、文件系统等)没有任何依赖关系,并且不是那么复杂,测试单独的部分会使开发和验证更容易,在该计算引擎中使用依赖项注入可能没有帮助。

    能否在其中一个阶段之前和之后提供一些示例代码?