場景:
我有一個簡單的狀態機:狀態機:如何在沒有外部事件(瞬態)的情況下改變狀態?
快樂路徑:
Uninitialized->Initialized->InProgress->Done
不幸的路徑:
Uninitialized->Initialized->Error
簡單地說,我需要引起轉換(進入InProgress或處於錯誤狀態)沒有外部連t /觸發器。即初始化狀態應立即導致其中一個狀態。
問題:
- 是否確定從Initialized.Enter()內導致狀態過渡?
- 我可以使用狀態警衛來做到這一點,但我寧願沒有在國家警衛非平凡的邏輯(初始化可能非常複雜)。
- 如果不行,我該怎麼做呢?
- 我是否應該將這個決定放在FSM之外,並讓其他組件導致相應的轉換?但是,那麼我是不是還必須從內部調用這個外部組件呢Initialized.Enter()?所以它什麼都不解決?
相關:http://stackoverflow.com/questions/1647631/c-state-machine-design/1651187 – jldupont 2009-10-31 11:23:39