2017-07-27 122 views
2

首先,Boost.DI看起來是非常有用的基於C++ 14中的依賴注入創建代碼的工具。這是非常好的記錄,我創建基本的應用程序使用Boost.DI相當快,但我仍然可以弄清楚如何處理與一些注入的依賴關係的對象的動態初始化容器。 Boost.DI會在應用程序啓動時通過注入器對象初始化整個應用程序類樹,但是如果我有一些帶有load方法的類「Foo」,該方法需要xml資源並且想要創建一堆對象「Bar」(帶有一些依賴於已經創建的模塊)。我是否應該將注入器對象傳遞給Foo,或者將某個工廠注入到Foo中並在該工廠中創建Bars?注入注射器看起來很奇怪,並使注射器全局導致任何人都可以創造任何東西的危險情況。注入工廠只會在其他地方發生同樣的問題,工廠如何創建沒有注入器對象的鋼筋?DI Boost C++ 14和動態容器

回答

0

在您的情況,它聽起來就像你可以從Foo類都知道如何加載XML的邏輯,並創建一個Bar,並且有這個邏輯從工廠拉姆達調用時您創建將綁定到Bar注射器。

如果加載XML並創建Bar的邏輯取決於需要由注入器創建的其他類,那麼這個注入器將是您的工廠lambda接收的參數。它不一定是全球性的注射器。