抽象ファクトリ パターンを使用して、具体的なファクトリに型固有のパラメータを持つ具体的なクラスを作成させることは可能ですか? それとも、それぞれの具象ファクトリによって作成されたさまざまな具象クラスは、同じフィールドを持つ必要がありますか?
例) 以下の画像では、クライアント (アプリケーション) から与えられた異なる引数セットを使用して、WinButton と OSXButton をインスタンス化するにはどうすればよいでしょうか?
抽象ファクトリ パターンを使用して、具体的なファクトリに型固有のパラメータを持つ具体的なクラスを作成させることは可能ですか? それとも、それぞれの具象ファクトリによって作成されたさまざまな具象クラスは、同じフィールドを持つ必要がありますか?
例) 以下の画像では、クライアント (アプリケーション) から与えられた異なる引数セットを使用して、WinButton と OSXButton をインスタンス化するにはどうすればよいでしょうか?
このような問題に対処するためのアプローチの1つは、オブジェクトパラメータを送信することです。たとえば、C#ではObjectが基本クラスであり、任意の派生クラスをとることができるObject型のパラメーターを渡すことができます。実装では、このオブジェクトを目的の派生型にキャストバックできます。特定のプロパティでもこの方法で設定できます。
詳細がなければ、これは簡単ではありません。私がすることの 1 つは、具体的なファクトリ クラスのコンストラクターに引数を渡そうとすることです。引数が異なる場合は、別のファクトリ インスタンスを作成する必要がありますが、これは最善の解決策ではない可能性がありますが、前述のように、これは詳細に依存します。
例:
GUIFactory factory = new WinFactory(WIN_9x_THEME); ボタン grayButton = factory.createButton(); factory = new WinFactory(WIN_VISTA_THEME, 50); ボタン semiTransparentButton = factory.createButton();