我使用狀態機爲我的C#的GUI應用程序時處理。有了這個,我有幾個狀態和一個叫做ErrorHappened的狀態。狀態機可以從每個狀態進入這些錯誤狀態。但是使用這種架構,我首先知道當狀態機進入ErrorHappened狀態時發生錯誤。錯誤使用狀態機
但我可以從一個狀態到狀態B的錯誤發生在過渡期間時怎麼辦?問題是狀態機從狀態A進入狀態B進入狀態ErrorHappened。通常我會在轉換到狀態B時完成一個動作。如果在轉換過程中出現錯誤,我不會執行此操作。當然,我可以引入一個像m_ErrorHappened這樣的bool變量,但在我看來,我有一個狀態機,所以我不必強制使用任何狀態變量。
我希望解釋是非常明顯的,以提供任何幫助。
示例代碼:
StateMachine sm; // initial state is state A
void AtoB() // executed during transition from A to B
{
if(DoSomething())
{
print("Error");
// Event ErrorHappened, state machine goes into state Error
sm.GotoState(ErrorHappened);
}
}
void TransitionEnd(State NewState)
{
if(NewState==B)
{
GreenLight();
}
if(NewState==Error)
{
RedLight();
}
}
main()
{
sm.GotoState(B);
}
現在,當出現錯誤綠色,然後紅色的燈就亮了。因爲狀態機從狀態A轉到狀態B到錯誤狀態。有沒有辦法檢測到錯誤,只有紅燈亮起?
示例代碼是值得1000個字。 – sstan