我正在使用无状态框架(https://code.google.com/p/stateless/)来为我的应用程序中的有限状态机建模。某些状态应该执行某些逻辑,然后立即进入下一个状态。我想知道这样做的好习惯如下:
var machine = new StateMachine<State, Trigger>(State.Idle);
machine.Configure(State.StateA)
.OnEntry(() =>
{
DoSomeStuff();
_machine.Fire(Trigger.TriggerB); // move to StateB
});
这是一款优秀的FSM设计吗?如果没有,那会有什么更好的方法?我试图实现的想法是让某些状态自动将机器推进到下一个状态,而不需要等待DoSomeStuff()完成然后触发机器在下一个状态下移动的外部代码。
答案 0 :(得分:6)
你似乎在谈论国家推动与国家拉动。两种方法都有效,在某些情况下,一种方法可以更有效。
使用状态推送方法是完全正确的,其中一个状态可以完成一些工作并调用转换。