这就是问题:
假设餐厅仅提供以下两种类型的餐:(a)全餐和(b)经济餐。全餐由以下食品组成,按以下顺序供应:1。开胃菜2.饮料3.主菜4.甜点 与此同时,经济餐包括以下食品,并在餐厅供应 以下顺序:1。饮用2.主菜
确定可用于允许客户的最合适的设计模式 只能使用提供的两种膳食中的一种和膳食成分 必须按照给定的顺序送达。
我在Factory和Iterator之间感到困惑,并将它们放在一起使用。使用工厂模式,我们可以创建两餐完整且经济,并为用户提供将决定的基础对象类。但是我们如何强制执行元素的排序,我想到使用迭代器将遍历两个创建的工厂的复合说话。
您怎么看?
答案 0 :(得分:1)
这是一个两步过程,我想你在哪里感到困惑。他们正在寻找的核心是用于选择用户订购用餐的逻辑的模式。这种逻辑实际上做了什么,或者用餐的顺序与该作品无关。
所以你有一个基本的Meal界面或抽象类,它有一个或多个方法来下订单(它没有说食物必须按服务顺序请求,你也可以注意)。该Meal类可能有几种方法,其中一种方法包括ServeFood()或类似方法。你将有两个具体的类(例如FullMeal和EconomyMeal),由于它们的顺序不重要,你可以使用Factory实现。
当调用ServeFood()时,具体课程将负责以正确的顺序提供食物。
答案 1 :(得分:1)
首先想到的是Decorator模式 这样你可以创建一个膳食基地和2个混合餐FullMeal和EconomicMeal 然后你就可以把这顿饭的组成部分作为装饰者,并根据你的喜好混合搭配。
答案 2 :(得分:-4)
我认为家庭作业没有很好地制定。如此处所述,我没有看到挑战。
识别...设计模式可用于允许客户仅使用两种膳食中的一种进行订购
问题是什么?只需向客户提供双选项("choose meal type (1-full, 2-economy):
)即可完成。为什么需要设计模式呢?
设计模式是程序员/设计师的工具,而不是用户。因此,正确的(恕我直言)问题应该是“提出允许程序员......的设计模式”,例如“......根据给定的固定菜肴类型组合/修改膳食类型”或类似的东西。
如上所述,问题没有定义编程/设计问题,或者默默地假设过多。