2009-07-16 4 views
2

ドロップダウンリストを含むWebフォームを考えてみましょう。ドロップダウンの選択に基づいて、いくつかのオプションが表示されます。選択肢ごとに2つまたは3つのオプションが表示されます。ユーザーが[OK]をクリックすると、サーバーは新しいオブジェクトを作成し、ドロップダウンリストで指定されたタイプと属性を適切なオプションから作成します。オブジェクト階層とcase文の比較

したがって、サーバーはドロップダウンの選択に基づいて3つのことを行う必要があります。いくつかのデータを取得し、適切なタイプのオブジェクトを作成します。ここで3つのcase文を使用するか、ドロップダウンリストの各選択項目に対して適切にサブクラス化できるAObjectCreatorクラスを作成しますか?

+0

私は、サブクラス化したり、より高度なデザインパターンを使用したりするのが好きです。 –

+0

今後追加される予定のタイプが多いかどうかによって異なります。タイプの数がこれまでにほとんど変わらず、十分に小さい場合は、ファクトリメソッドを1か所に置き換えてください。 – Gishu

答えて

0

Factoryが必要です。
今のところほぼ同義のPizzaFactoryの例を見てください。

+1

ドロップダウンに2つのオプションしかない場合は、実際にファクトリ、基本クラス、2つのサブタイプを作成しますか? –

+0

いいえその場合、私はちょうどif-elseを使い、それを使ってやります。 – Gishu

1

サブクラス。

スイッチステートメントは、面倒で高速です。

+0

どのくらい速いですか?ドロップダウンに5つのオプションがある場合、問題に行くでしょうか?どのように3? 2? –

+0

数式はありません。オプションを追加する可能性がある場合は、オブジェクトを参照してください。ケースが複雑な場合は、オブジェクトを参照してください。最終的にデザインはあなた次第です。あなたの問題に最も適したものを実行します。サブクラス化は私の提案にすぎません。 – geowa4

関連する問題