Пицца Класс Дизайн - PullRequest
       8

Пицца Класс Дизайн

1 голос
/ 25 января 2012

Я сталкивался с этим примером в книге Head First Design Patterns.Класс пиццы имеет следующие методы:

  • готовить
  • выпекать
  • вырезать
  • коробка

Я считаю, чтометоды не должны входить в класс Pizza, и они должны входить в отдельный класс.Даже если мы игнорируем тот факт, что принцип единой ответственности нарушается, я все же думаю, что они должны относиться к отдельному классу (скажем, PizzaStore).

Пожалуйста, прокомментируйте.

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Я действительно думаю, что это нормально, если они находятся в классе Pizza, поскольку они могут представлять изменения состояния и, таким образом, являются частью логики класса:

  • bake() можетиспользоваться для изменения состояния объекта Pizza.Первоначально это может быть raw, а после вызова метода это может быть baked.(хаха, запеченный!).

  • cut() можно использовать для изменения члена numberOfSlices.Первоначально это может быть 1, затем 2, 4 и т. Д.

Эти методы, конечно, вызываются извне, но они изменяют состояниеобъект.Для меня имеет смысл, что они являются частью класса.

1 голос
/ 25 января 2012

Было бы нормально реализовать здесь фабричный шаблон.Давайте поместим некоторый метод скажем bakePizza в класс скажем PizzaFactory , который возвращает экземпляр класса Pizza.

...