DI Boost C ++ 14和动态容器

时间:2017-07-27 08:50:31

标签: c++ boost dependency-injection

首先,Boost.DI看起来非常有用,可以在C ++ 14中基于依赖注入创建代码。这是非常好的文档和我使用Boost.DI创建基本应用程序非常快,但我仍然可以弄清楚如何处理具有一些注入的依赖项的动态初始化的对象容器。 Boost.DI将在应用程序启动时通过注入器对象初始化整个应用程序类树,但是如果我有一些带有加载方法的类“Foo”,它采用xml资源并想要创建一堆对象“Bar”(有些基于该资源的依赖于已创建的模块。我应该将注射器对象传递给Foo,还是将一些工厂注入Foo并在该工厂中创建Bars?注入喷射器似乎非常奇怪,使喷射器全局导致危险的情况,任何人都可以创建任何东西。注入工厂只会在其他地方移动相同的问题,工厂如何在没有注入器对象的情况下创建Bars?

1 个答案:

答案 0 :(得分:0)

在您的场景中,您可以从Foo类中获取知道如何加载XML并创建Bar的所有逻辑,并从工厂lambda中调用此逻辑在创建进样器时会绑定到Bar

如果加载XML并创建Bar的逻辑取决于需要由注入器创建的其他类,则此注入器将是工厂lambda接收的参数。它不一定是全球注入者。

相关问题