2017-07-27 49 views
2

まず最初に、Boost.DIは、C++での依存性注入に基づいてコードを作成するための非常に便利なツールのようです14。 Boost.DIを使って基本的なアプリケーションを作成したのは非常に速いですが、私がまだ理解できるのは、いくつかの注入された依存関係を持つオブジェクトの動的に初期化されたコンテナを扱う方法です。 Boost.DIは、インジェクタオブジェクトを介して、アプリケーション起動時にmainのアプリケーションクラスツリー全体を初期化しますが、例えば、いくつかのクラス "Foo"を持っていて、XMLリソースを受け取り、たくさんのオブジェクト "Bar"(いくつかすでに作成されているモジュールへの依存関係)。インジェクタオブジェクトをFooに渡すか、Fooにいくつかのファクトリを注入し、そのファクトリにバーを作成する必要がありますか?インジェクタを注入することは本当に奇妙に思えますし、インジェクタをグローバルにすることで、誰でも何かを作成できる危険な状況につながります。工場に注入すると同じ問題がどこか別の場所に移動するだけで、工場はインジェクタオブジェクトなしでバーを作成できますか?あなたのシナリオではDI Boost C++ 14と動的コンテナ

答えて

0

あなたはFooクラスからXMLをロードし、Barを作成する方法を知っているすべてのロジックを取り、このロジックは、あなたが作成するときにBarに結合する工場出荷時のラムダから呼び出すことができますように聞こえますインジェクタ。

XMLをロードしてBarを作成するロジックが、インジェクタによって作成される必要がある他のクラスに依存する場合、このインジェクタは、ファクトリのラムダが受け取るパラメータになります。グローバルインジェクタである必要はありません。

関連する問題