项目中正好要用到有限状态机js微框架(javascript-state-machine)。所以,下面对有限状态机的概念和这个框架做一些调研和分析。
有限状态机(FSM)
有限状态机(finite-state machine, FSM),又称有限状态自动机,状态机。是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。可参考wiki-有限状态机
状态机有三个特征:
状态总数(state)是有限的。
任一时刻,只处在一种状态之中。
某种条件下,会从一种状态转变(transition)到另一种状态。
状态机有几个重要的概念:状态、条件和动作。
状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。状态可以无限细分,也可以大致归类,需要根据实际应用进行划分。例如下拉菜单,可以分为两个状态:隐藏列表和显示列表。
条件触发状态变化。满足了特定的条件,动作才会发生。例如,鼠标mouseover菜单和mouseout菜单,是触发状态切换的条件。
动作是在给定时刻要进行的活动的描述。在上面的例子里,动作是指将隐藏列表显示,或者将显示列表隐藏的行为。这个和状态不同,状态其实是我们自己的定义,为了方便理解,赋予他一定的意义。