gpt4 book ai didi

dependency-injection - 何时使用 IOC 容器?

转载 作者:行者123 更新时间:2023-12-03 14:57:04 25 4
gpt4 key购买 nike

我试图了解何时应该使用容器而不是手动注入(inject)依赖项。如果我有一个使用 1-2 个接口(interface)的应用程序,并且每个接口(interface)只有 1-2 个具体实现,我会倾向于自己处理。

如果我有一个使用 2-3 个接口(interface)的小应用程序,每个接口(interface)有 2-3 个具体实现,我应该使用成熟的容器吗?像this这样简单的东西吗?够了吗?

基本上,我试图了解何时适合手动处理这些依赖项,何时(或是否)我应该使用像上面这样简单的东西,以及何时使用像 Ninject、Windsor 等这样的 IOC 容器......它可能不会在这样的东西上放一个数字是合适的,但我怎么知道是时候使用 IOC 容器了?

最佳答案

这里要意识到的重要一点是,您可以(并且应该)在 DI-friendly, but container-agnostic 中编写代码。方式。

这意味着您应该始终将依赖项的组合推到您无法再推迟它的地步。这称为 Composition Root并且通常放置在应用程序入口点附近。

如果您以这种方式设计您的应用程序,那么您对 ​​DI 容器(或没有 DI 容器)的选择将围绕您应用程序中的一个位置进行,您可以快速更改策略。

您可以选择使用穷人的 DI 如果您只有几个依赖项,或者您可以选择使用成熟的 DI 容器 .以这种方式使用,您将不会依赖任何特定的 DI 容器,因此选择变为 不太重要在可维护性方面。

DI 容器可帮助您管理复杂性,包括对象生命周期。像这里描述的那样使用,它不会做任何你不能写在手上的事情,但它会做到更好更简洁 .因此,我何时开始使用 DI 容器的阈值会很低。

一旦我克服了一些依赖关系,我就会开始使用 DI 容器。 Most of them are pretty easy to get started with anyway .

更新:我的 November 2012 answer to that question .

关于dependency-injection - 何时使用 IOC 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com