网络编程中的某些场景需要具有多个层次深度的状态机。
State Machine 1
State Machine 2
State Machine 3
State Machine 4
这里的状态机1
包含两个状态机2
和3
。 3
还包含一台机器 4
。
根据外部机器的状态,消息应该通过内部状态机。此外,如果内部状态机存在一些错误,则应向上级机器反馈。
有没有好的方法来做到这一点?
现在我有一大堆 if 语句和标志可以帮我做这件事。由于状态机的整个状态进入不可恢复状态,我一直面临未设置某些标志的问题。
更新: 我试图保持状态和机器静止。由于请求将通过机器和状态,请求本身将存储所需的所有元数据。在这种情况下,正常的状态机模式无济于事。
最佳答案
State Pattern分离状态和上下文。 Context 可以存储状态的层次结构,而状态子类本身并不知道这种层次结构。所有 if 语句都消失了,因为 if 下的每个部分都进入了一个单独的状态子类。
关于java - 多级和分层状态机的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13778864/