依存性注入を正しく実装する方法の1つは、オブジェクト作成とビジネスロジックを分離することです。通常、これはオブジェクト作成のためにファクトリを使用することを含みます。Factoryメソッドにパラメータを渡すことはできますか?
この時点までは、私は真剣にこの質問は少し単純化したと思われる場合ので、私は謝罪ファクトリーを使用して考えられたことがありません:
私は全体の実行したファクトリパターンのすべての例では、私はいつもパラメータ化を持たない非常に簡単な例を参照してください。たとえば、Misko Hevery'sという優れたHow To Think About the "new" Operatorの記事から工場を盗んだ場合などです。
class ApplicationBuilder { House build() { return new House(new Kitchen( new Sink(), new Dishwasher(), new Refrigerator()) ); } }
しかし、私が建てた各家に名前を付けるとどうなりますか?このコードを次のように書き直すと、私はまだFactoryパターンを使用していますか?私のファクトリメソッドの呼び出しは、このから変更された
class ApplicationBuilder { House build(const std::string & house_name) { return new House(house_name, new Kitchen(new Sink(), new Dishwasher(), new Refrigerator()) ); } }
注:これに
ApplicationBuilder builder; House * my_house = builder.build();
:ところで
ApplicationBuilder builder; House * my_house = builder.build("Michaels-Treehouse");
:私は、オブジェクトを分離するという概念はビジネスロジックからインスタンス化すると思います私は自分の状況にどのように適用できるかを考えようとしています。私が混乱しているのは、Factoryパターンのすべての例では、build()関数にパラメータを渡すことはないということです。
明確にする:私はインスタンス化する必要がある瞬間まで家の名前を知らない。
私がよく見たように、工場ではパラメータを取ることがあります。それには何も問題はありません。またはあなたの質問の点で。それは完全に大丈夫です。 – grieve