比萨级设计

时间:2012-01-25 09:40:27

标签: design-patterns

我在Head First Design Patterns一书中看到了这个例子。 Pizza类有以下方法:

  • 制备
  • 烘烤

我相信这些方法不应该进入Pizza课程,他们应该进入一个单独的课程。即使我们忽略了单一责任原则被违反的事实,我仍然认为这些应该进入一个单独的类(比如PizzaStore)。

请评论。

2 个答案:

答案 0 :(得分:2)

我实际上认为它们在Pizza类中是可以的,因为它们可以表示状态变化,因此它们是类逻辑的一部分:

  • bake()可用于更改Pizza对象的状态。它最初可能是raw,在方法调用之后它可能是baked。 (哈哈,烤!)。

  • cut()可用于修改成员numberOfSlices。最初可以是1,然后是24,依此类推。

这些方法当然是从外部调用的,但它们会修改对象的状态。对我而言,他们是班上的一员是有道理的。

答案 1 :(得分:1)

这里可以实现工厂模式。 让我们在课堂上说一些方法说 bakePizza PizzaFactory ,它会返回类Pizza的实例。