我從典型實施State pattern小號收集這是什麼:狀態模式是否準確表示方法?
問題:表示對象Ø,基於其當前狀態,其行爲會改變。
解決方案:
1.讓小號,該目的ö內另一個目的,表示狀態
2.對象小號將調用的ö
3.對象的適當的操作S將決定對象的下一個狀態O
我的關注主要是w第#3
。狀態轉換表基本上分佈在所有狀態中。我看到這些解決方案變得非常繁瑣,難以快速管理。這些國家不是指示性的,而是有關狀態機的太多信息。
即使#2
困擾我,我想這是相當合理的(Moore machine。)我已經看到唯一的問題出現在錯誤修復/調試:代碼導航/理解變得很難,直到一個提交所有的狀態映射到內存。
下面的實施會更精確嗎?
將狀態表示爲枚舉,對象根據枚舉所持有的值決定動作。 state transitions
位於表格(δ,狀態轉換函數)中,該表格是當前狀態到下一狀態的映射。這state transition table
也持有要執行的動作(Mealy machine)
是的。這真是一種模式。請修正標題以反映您的實際問題。 – 2011-03-07 17:00:35
你所描述的是另一種實現狀態機的方式(也是我見過的常見狀態),但它不是狀態機模式(從GoF模式手冊引用) – nos 2011-03-07 17:04:58
+1,謝謝。更新了標題。 – CMR 2011-03-07 17:07:17