7

坦率地说,这是一个家庭作业问题,所以我会告诉你我的意见。你能让我知道我的错误而不是给我解决方案吗?

这是问题:

假设一家餐厅只提供以下两种餐点:(a)全餐和(b)经济餐。正餐由以下食物组成,按以下顺序供应: 1. 开胃菜 2. 饮料 3. 主菜 4. 甜点 同时经济餐由以下食物组成,按以下顺序供应: 1.饮料 2. 主菜

确定最合适的设计模式,该模式可用于允许客户仅使用所提供的两种餐食中的一种进行订购,并且餐食成分必须按给定的顺序提供。

我对工厂和迭代器感到困惑,并将它们一起使用。使用工厂模式,我们可以创建完整且经济的两餐,并为用户提供将决定的基础对象类。但是我们如何才能强制元素的顺序,我想到了使用迭代器来遍历两个创建的工厂的组合。

你怎么看?

4

3 回答 3

1

这是一个两步过程,我认为这是您感到困惑的地方。他们正在寻找的核心是您将用来选择用户订购餐点的逻辑的模式。该逻辑实际上做了什么,或者用餐的顺序与该部分无关。

所以你会有一个基本的 Meal 接口或抽象类,它有一个或多个下订单的方法(你会注意到,它也不是说必须按照上菜的顺序请求食物)。该 Meal 类可能有几个方法,其中一个包括 ServeFood() 或类似的方法。您将有两个具体的类(例如 FullMeal 和 EconomyMeal),并且由于它们的顺序并不重要,您可以使用工厂来实现。

当调用 ServeFood() 时,具体类将负责以正确的顺序提供食物。

于 2011-01-09T13:57:02.727 回答
1

首先想到的是装饰器模式,这样你可以创建一个膳食基础和 2 个联合膳食 FullMeal 和 EconomicMeal,然后你可以将膳食的组件作为装饰器,并根据需要混合和匹配它们。

于 2011-01-09T15:22:55.947 回答
-4

我认为作业没有很好地制定。正如这里所引用的,我没有看到挑战。

识别...设计模式,可用于允许客户仅使用两种餐食中的一种进行订购

有什么问题?只需向客户提供 2 个选项选择 ( "choose meal type (1-full, 2-economy):" 就完成了。为什么需要一种设计模式呢?

设计模式是程序员/设计师的工具,而不是用户的工具。所以正确的(恕我直言)问题应该是“提出允许程序员......的设计模式”,例如“......根据给定的固定菜肴类型组合/修改膳食类型”或类似的东西种类。

如前所述,该问题没有定义编程/设计问题,或者默默地假设太多。

于 2011-01-09T13:48:11.510 回答