2

私はGo4デザインパターンの本を読んでいて、現在ファクトリーメソッドパターンを見ています。この本はPg:110に言及しています

「ファクトリ パターンの別のバリエーションでは、ファクトリ メソッドで複数の種類の製品を作成できます。ファクトリ メソッドは、作成するオブジェクトの種類を識別するパラメータを取ります」

では、工場は常に複数の種類の製品を作成するのではないでしょうか? また、作成する製品の種類を決定するために、パラメーターを送信する必要は常にあるのではないですか? つまり、パラメーターを渡さない場合、ファクトリはどのオブジェクトを作成するかをどのように決定するのでしょうか? 別のバリエーションとはどういう意味ですか? ここでポイントがありませんか?

4

3 に答える 3

2

ファクトリとファクトリ メソッドがあるため、GOF は少し混乱する可能性があります。どちらがどちらであるかは決してわかりません。全文がないと、何について話しているのかわかりにくい。

通常、作成したファクトリのタイプだけが、メソッドによって返されるものを決定します。たとえば、ピザ ファクトリがある場合、さまざまなメソッドがさまざまなピザを返します。しかし、どのメソッドを作成するかはファクトリによって決定されます。つまり、メソッドごとに特定のタイプです。もちろん、使用するファクトリを選択する以外に作成されるものに影響を与えないため、これは 1 つの方法で制限されますが、このバリアントを使用するフレームワークでは、それが全体のアイデアです。工場はあなたの手からオプションを奪うので、選択する責任はありません. 基本的にあなたは「あなたが持っているものは何でも私にください」と言います。たとえば、ペパロニのピザをください。ただし、工場は、使用している工場に応じて、ニューヨークのペパロニ ピザまたは極薄のペパロニ ピザを返すことができます。

工場が戦略のように機能する状況があります。あなたはそれが何をするのか知りたくありませんが、受け取りたいタイプを伝えることができるようにしたいのです. 型には、ファクトリが機能するインターフェイスが必要です。または、ファクトリ自体がインターフェイスを必要としないほど単純である必要があります。ここでは、「このタイプのインスタンスを私に与えてください。インスタンスで通常行うことは何でもしてください」と言います。例: チーズを追加したこのピザが欲しい。

お役に立てれば。

于 2010-12-10T02:26:05.760 に答える
1

彼らは継承された型について話していると思います。したがって、親クラスとして製品があり、2 つの子クラスBetaProductFinishedProduct. ファクトリ内の制御フローを変更する何らかのパラメータを単純に渡すことでBetaProduct、作成するオブジェクトの種類をファクトリに伝えることができます。FinishedProductファクトリが持っている情報に基づいてオブジェクトの値を常に設定します...しかし、製品の種類について話すとき...それは子クラスの名前/タイプです。

于 2010-12-09T14:32:12.237 に答える
0

ファクトリはデータベースまたは構成ファイル自体から値を検索できますが、これはファクトリの外部で行われ、渡される可能性が高くなります。

于 2010-12-09T14:50:13.270 に答える