2011-01-14 130 views
2

什麼是最接近的問題跟蹤器的設計模式?跟蹤/狀態的設計模式

您有一個對象可以是各種狀態之一:open,closed,in production

可以根據當前狀態執行操作。

我最初的造型看起來有點像這樣:

class Status 
    - next_status (None or Status) 
    - previous_status (None or Status) 
    - actions (set of Actions) 

class Action 
    - name (string) 
    - description (string) 

隨着分組動作,並指定該組的狀態的可能性。與大多數權限模型類似,您可以說。

只是在尋找什麼樣的模式,這最緊隨其後,所以我可以研究一些更多的輸入。謝謝!

回答

3

您代表的是finite state machine(FSM)的組合,真正的流程圖,但你的類的設計看起來像一個doubly-linked list。如果狀態確定先前和下一個狀態是可行的,但在大多數系統中這是不真實的。在你的例子中考慮一個「開放」的狀態,下一個可能是「關閉」還是「正在生產」?

如果二者的狀態是可能考慮改變現狀對象,並添加過渡(或者替換操作?)對象的類層次結構:

class Status 
    - transitions (Transition[]) 

class Transition 
    - from (Status) 
    - to (Status) 

這裏狀態知道什麼轉變是可能的(例如,「開「可能會過渡到」關閉「或」正在生產「)。通過這種方式,您將FSM表示爲directed graph。另外,根據我自己的經驗,讓一個實體知道它剛剛從哪裏來,通常並不重要,因此刪除了prior_status。相反,可以通過審計記錄/數據庫表捕獲歷史來捕獲路徑。

+0

這看起來像我想要的。我已經記錄過渡,這給了我正確的洞察力,如何建立在這個基礎上。謝謝! – 2011-01-14 19:04:43