我应该在这个问题中使用什么设计模式?

时间:2011-01-09 12:37:45

标签: design-patterns software-design

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

这就是问题:

  

假设餐厅仅提供以下两种类型的餐:(a)全餐和(b)经济餐。全餐由以下食品组成,按以下顺序供应:1。开胃菜2.饮料3.主菜4.甜点   与此同时,经济餐包括以下食品,并在餐厅供应   以下顺序:1。饮用2.主菜

     

确定可用于允许客户的最合适的设计模式   只能使用提供的两种膳食中的一种和膳食成分   必须按照给定的顺序送达。

我在Factory和Iterator之间感到困惑,并将它们放在一起使用。使用工厂模式,我们可以创建两餐完整且经济,并为用户提供将决定的基础对象类。但是我们如何强制执行元素的排序,我想到使用迭代器将遍历两个创建的工厂的复合说话。

您怎么看?

3 个答案:

答案 0 :(得分:1)

这是一个两步过程,我想你在哪里感到困惑。他们正在寻找的核心是用于选择用户订购用餐的逻辑的模式。这种逻辑实际上做了什么,或者用餐的顺序与该作品无关。

所以你有一个基本的Meal界面或抽象类,它有一个或多个方法来下订单(它没有说食物必须按服务顺序请求,你也可以注意)。该Meal类可能有几种方法,其中一种方法包括ServeFood()或类似方法。你将有两个具体的类(例如FullMeal和EconomyMeal),由于它们的顺序不重要,你可以使用Factory实现。

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

答案 1 :(得分:1)

首先想到的是Decorator模式 这样你可以创建一个膳食基地和2个混合餐FullMeal和EconomicMeal 然后你就可以把这顿饭的组成部分作为装饰者,并根据你的喜好混合搭配。

答案 2 :(得分:-4)

我认为家庭作业没有很好地制定。如此处所述,我没有看到挑战。

  

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

问题是什么?只需向客户提供双选项("choose meal type (1-full, 2-economy):)即可完成。为什么需要设计模式呢?

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

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