C++ 如何管理增压::di喷油器?

C++ 如何管理增压::di喷油器?,c++,boost,dependency-injection,C++,Boost,Dependency Injection,我似乎不明白使用with的用处 我想我理解的力量,以及它的广泛使用如何导致在类的构造函数中有大量的参数。 我还了解了库如何帮助管理依赖项的范围和其他内容 我没有看到的是,这个injector如何没有成为所用类的输入参数集合。恐怕不是将应用程序中的所有单例传递给每个对象,而是传递完全配置的injector对象。的确,它比跟踪所有的单例和其他依赖项要简单得多,但是,这种方法似乎只是缓解了问题,而不是像它承诺的那样解决问题 喷油器只是一个花哨的工厂吗?我是否应该将我的喷油器设置为全局喷油器以避免出现这

我似乎不明白使用with的用处

我想我理解的力量,以及它的广泛使用如何导致在类的构造函数中有大量的参数。 我还了解了库如何帮助管理依赖项的范围和其他内容

我没有看到的是,这个
injector
如何没有成为所用类的输入参数集合。恐怕不是将应用程序中的所有单例传递给每个对象,而是传递完全配置的
injector
对象。的确,它比跟踪所有的单例和其他依赖项要简单得多,但是,这种方法似乎只是缓解了问题,而不是像它承诺的那样解决问题

喷油器
只是一个花哨的工厂吗?我是否应该将我的
喷油器设置为全局喷油器
以避免出现这种情况


依赖注入框架相当流行,所以我肯定错过了一些东西。

您不需要全局注入,也不需要传递它。类将采用依赖项,
main
将注册这些依赖项并创建一个特定的类对象,这将导致注入器创建并传入其依赖项,并在必要时继续进行。@chris:例如,我如何管理绑定?我是否也在
main()
中设置它们?如果它们必须在较低的级别上定义呢?例如,应用程序在每个模块中使用具有不同绑定的对象。是的,绑定通常在从
main
使用的模块中设置。如果这需要稍后的运行时决策(例如,用户选择一个策略),那么依赖项可以更改为抽象工厂。但一般来说,对于DI,复杂类(具有依赖关系的类)的创建被推送到合成根(
main
)。您当然可以拥有反映实际模块的Boost.DI模块,然后将它们组合起来。我认为有帮助的是走出去寻找大量的例子,Java和C是一个很好的地方,因为这在那里更为普遍。@chris,我认为你的评论也可以成为答案。如果你能给我举出相关的例子,我将不胜感激。没有解决问题,而是使用特定于AngularJS的“变通方法”。