正式名称があるかどうかわかりませんが、私は「自己工場」パターンと呼ぶのが好きです。基本的には、抽象基本クラスが自身のファクトリとして機能するときです。私は説明しましょう:「自己工場」パターン
私はFooオブジェクトとBarオブジェクトを私のシステムに持っています。これらはFooInterfaceとBarInterfaceインタフェースを介して使用されます。クライアントに適切なタイプのFoo and Barを提供する必要があります。作成する具体的なFooオブジェクトの決定は、コンパイル時に行われます。たとえば、Win32でコンパイルする場合は、Win32Fooオブジェクトのみを作成し、OSXでコンパイルする場合はOSXFooオブジェクトなどを作成するだけです。しかし、作成する具体的なBarオブジェクトの決定は、実行時にキーストリングに基づいて行われます。
今、私の質問は、このスキームを実装する最良の方法です。私が思い付く一つの方法定期的な工場を使用しています。
shared_ptr<FooInterface> foo = FooFactory::create();
shared_ptr<BarInterface> happyBar = BarFactory::create("Happy");
shared_ptr<BarInterface> sadBar = BarFactory::create("Sad");
もう一つの方法は、私は「自己の工場」と呼ぶものを使用することです:
shared_ptr<FooInterface> foo = FooInterface::create();
shared_ptr<BarInterface> happyBar = BarInterface::create("Happy");
shared_ptr<BarInterface> sadBar = BarInterface::create("Sad");
の両方から、各アプローチの長所と短所は何ですか使いやすさの観点とアーキテクチャの観点から?
私はあなたが自己工場として提案しているのは、プロトタイプパターンとも呼ばれていると思います。おそらくそのパターンに関する文献をアイデアのために見直すことができます。 –