场景:
我有一个简单的状态机:状态机:如何在没有外部事件(瞬态)的情况下改变状态?
快乐路径:
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