控制器從用戶接收幾個水果的列表。控制者需要從這些水果中的每一種製作果汁。一個榨汁機可以用橙子和葡萄柚製成果汁;另一個榨汁機知道用蘋果,香蕉和木瓜做果汁;等等。每個榨汁機可以一次接受多個水果,它只會處理其能夠的水果,並忽略其他水果。請提出適合此問題的設計。我一直在考慮下列選項:設計模式選擇難題
- 控制器調用
MasterJuicer.juice(List<Fruit> fruits)
。MasterJuicer
又調用CitrusJuicer.juice(fruits)
和PulpyJuicer.juice(fruits)
。 - 責任鏈看起來不正確。榨汁機的調用順序無關緊要。
- 工廠?控制器調用
JuicerFactory.getJuicers(List<Fruit> fruits)
得到List<Juicer>
。然後控制器通過每個榨汁機循環並調用Juicer.juice(fruits)
。工廠返回實例列表是否很常見? - 在
Map
中維護水果與榨汁機的註冊表?控制器爲每個水果調用FruitsRegistry.getJuicer(Fruit fruit)
,然後循環調用每個Juicer。
非常有吸引力的答案。我將咀嚼這些想法一段時間,看看這些有利於我的真實業務場景。感謝您使用類路徑掃描工具的鏈接! – Somu