在網絡編程中有一些情況需要具有多級和分級深度的狀態機。多級和分級狀態機的設計
State Machine 1
State Machine 2
State Machine 3
State Machine 4
這裏狀態機1
包含兩個狀態機2
和3
。 3
也包含一臺機器4
。
根據外機的狀態,消息應該通過內部狀態機。同樣,如果內部狀態機中存在一些錯誤,則應將反饋提供給上位機。
有沒有一個很好的方法來做到這一點?
現在我有一個if語句和標誌爲我做這個的叢林。由於狀態機的整個狀態都處於不可恢復的狀態,因此我仍然面臨一些標誌未設置的問題。
更新: 我試圖保持狀態和機器靜態。由於請求會通過機器和狀態,請求本身會存儲所有需要的元數據。在這種情況下,正常的狀態機模式不起作用。
我試圖使用狀態,但似乎並沒有爲這樣的設計工作。實際上,我的程序流程也在機器之間來回切換。就像在一個事件中,我在內部機器上,但對於下一個事件,我需要在外部機器中。這就是造成重大問題的原因。 –
您應該閱讀關於設計模式的GOF手冊。在實現部分中介紹了實現您所談論的狀態轉換。我會爲你總結它:狀態轉換可以完全在Context或State子類中實現。你應該選擇在哪裏實施,通過問問題如下:是固定的國家數量還是將增加更多? – user1168577