2011-02-07 58 views
1

我想使用狀態設計模式重新設計代碼。這些州屬於特定的對象。使用狀態設計模式重新設計 - 疑問

實施例:

A類可以具有三種狀態:ST1,ST2,ST3。

同樣,另一個類B可以有2個狀態:st4,st5。

有一種情況,C類有一個狀態:st1和st4和st5。

基本上這些狀態在複雜對象的情況下應該是可以互換的。

此外,這些類A,B和C包含特定於它們的數據,這些數據將由州使用。

我的問題是:應如何設計狀態機?每個班級是否應該有單獨的SM?所有的州可以有一個共同的基礎接口?

請幫我一把;如果你需要更多的信息,你可以問我更多的問題。

回答

1

我的問題應該怎麼狀態 機的設計,應該有 個人SM爲每類?

如果我理解你的描述,答案是肯定的,每個對象都需要自己的狀態機。

所有州可以有一個共同的基地 接口?

通用接口意味着通用API與多個實現。每個州有哪些常見方法,以及各州的實施方式有何不同?

如果沒有不同的行爲,您可能不需要每個州的類。你可能只有一個國家班級和一個FSM來管理國家集合和管理轉換的規則。

0

在我卑微的經歷中,狀態設計模式在某種程度上難以使用,因爲它往往會生成大量的樣板代碼。我通常更喜歡問題的標準函數指針方法。如果你的對象/狀態不是太大/太複雜,這是一個更簡單的方法。

MY2C

+0

我認爲你是正確的,如果對象很小,狀態不是太多,但我認爲在我的情況下,我想有一個可擴展的設計。由於使用函數指針似乎是一個直接的解決方案另外我覺得它需要一些額外的努力在維護 – wthomas 2011-02-08 10:03:04

+0

@wthomas:魔鬼是在細節:)祝你好運與你的代碼! – neuro 2011-02-08 18:37:04