2012-01-25 71 views
1

我在Head First Design Patterns書中遇到了這個例子。比薩類有以下方法:披薩類設計

  • 準備
  • 削減

我相信這些方法不應該進入比薩類,他們應該進入一個單獨的課程。即使我們忽視單一責任原則被違反的事實,我仍然認爲這些應該分成一個單獨的類(比如PizzaStore)。

請評論。

+0

你能解釋一下你爲什麼會在不同的班級想要嗎? – wrongusername

回答

2

其實,我認爲這是確定的,如果他們在Pizza類,因爲它們可以代表狀態變化,並因此類邏輯的一部分:

  • bake()可以用來改變的狀態Pizza對象。它最初可能是raw,方法調用後可能是baked。 (哈哈,烤!)。

  • cut()可用於修改成員numberOfSlices。最初它可能是1,其次是2,4等等。

這些方法當然是從外部調用的,但它們會修改對象的狀態。對我來說,他們是班級的一部分是有道理的。

1

這將是確定在這裏實現工廠模式。 讓我們把一些方法,一類說bakePizzaPizzaFactory返回比薩類的一個實例。

+0

我相信比薩餅在烤之前還是比薩。 –

+0

@LuchianGrigore這更像是一個哲學問題。 – adelphus

+1

我不明白你爲什麼要工廠。難道你不能創建實例...爲什麼使用設計模式,除非他們被要求?你有什麼爭論? –