コントローラーは、ユーザーからいくつかの果物のリストを受け取ります。コントローラーは、これらの果物のそれぞれからジュースを作る必要があります。1台のジューサーでオレンジとグレープフルーツからジュースを作ることができます。別のジューサーは、リンゴ、バナナ、パパイヤからジュースを作ることを知っています。等々。すべてのジューサーは、一度に複数のフルーツを受け入れることができます。処理できるフルーツのみを処理し、他のフルーツはそのまま無視します。この問題に対する適切な設計を親切に提案してください。次のオプションを検討しています。
- コントローラーの呼び出し
MasterJuicer.juice(List<Fruit> fruits)
。MasterJuicer
順番に と を呼び出しCitrusJuicer.juice(fruits)
ますPulpyJuicer.juice(fruits)
。 - 責任の連鎖は正しくないようです。Juicers が呼び出される順序は関係ありません。
- 工場?コントローラーを呼び出し
JuicerFactory.getJuicers(List<Fruit> fruits)
て を取得しList<Juicer>
ます。次に、コントローラは各 Juicer をループして を呼び出しますJuicer.juice(fruits)
。Factory がインスタンスのリストを返すのは一般的ですか? - Fruit vs. Juicer のレジストリを
Map
? コントローラーはFruitsRegistry.getJuicer(Fruit fruit)
各フルーツを呼び出し、ループ内で各ジューサーを呼び出します。