7

率直に言って、これは宿題の質問なので、私の意見を述べます。解決策を教えてくれるのではなく、間違いを教えてもらえますか?

これは質問です:

次の 2 種類の食事のみを提供するレストランを想定します: (a) 完全な食事と (b) 経済的な食事。フルミールは次の食品で構成され、次の順序で提供されます: 1. 前菜 2. 飲み物 3. メインディッシュ 4. デザート 一方、経済的な食事は次の食品で構成され、次の順序で提供されます: 1.ドリンク 2.メインディッシュ

顧客が提供される 2 種類の食事のいずれかのみを使用して注文できるようにするために使用できる最も適切な設計パターンを特定し、食事の構成要素は指定された順序で提供する必要があります。

Factory と Iterator を混同していて、両方を一緒に使用しています。ファクトリ パターンを使用して、完全で経済的な 2 食を作成し、決定するベース オブジェクト クラスをユーザーに提供できます。しかし、要素の順序付けを強制するにはどうすればよいでしょうか。私は、作成された 2 つのファクトリの複合体を反復処理するイテレータを使用することを考えました。

どう思いますか?

4

3 に答える 3

1

最初に頭に浮かぶのは Decorator パターンです。このようにして、食事ベースと 2 つの具体的な食事を FullMeal と EconomicMeal を作成し、食事の構成要素をデコレーターとして使用し、好きなように組み合わせて一致させることができます。

于 2011-01-09T15:22:55.947 に答える
1

これは 2 段階のプロセスであり、混乱していると思います。彼らが探している中心的なものは、ユーザーが食事を注文するロジックを選択するために使用するパターンです。そのロジックが実際に行うこと、または食事が提供される順序は、その部分には関係ありません。

したがって、注文を行うためのメソッドまたは複数のメソッドを持つ基本的な Meal インターフェースまたは抽象クラスが必要になります (料理を提供する順序で注文する必要があるとは言っていません)。その Meal クラスにはおそらくいくつかのメソッドがあり、そのうちの 1 つに ServeFood() などがあります。そのための 2 つの具象クラス (例: FullMeal と EconomyMeal) があり、それらの順序は重要ではないため、Factory を使用して実装できます。

具体的なクラスは、ServeFood() が呼び出されたときに正しい順序で食品を提供する責任があります。

于 2011-01-09T13:57:02.727 に答える
-4

宿題がうまくできていないと思います。ここで引用されているように、私は挑戦を見ていません。

顧客が 2 種類の食事のいずれかのみを注文できるようにするために使用できる設計パターンを特定する

問題は何ですか?顧客に 2 つのオプションの選択肢 ( "choose meal type (1-full, 2-economy):" を提示するだけで完了です。なぜそのためのデザイン パターンが必要なのですか?

デザイン パターンはプログラマー/デザイナーのためのツールであり、ユーザーのためのものではありません。したがって、正しい(IMHO)質問は、「プログラマーが...できるようにするデザインパターンを提案する」、たとえば「...特定の固定料理タイプに基づいて食事タイプを組み合わせる/変更する」または何か選別。

述べたように、質問はプログラミング/設計の問題を定義していないか、暗黙のうちに想定しすぎています。

于 2011-01-09T13:48:11.510 に答える