概念

有限状态自动机(FSM:Finite State Machine),简称状态机。它是描述有限多个状态以及状态转移需要满足的条件和条件满足后触发的动作的数学模型。
状态机有四个要素:

因此,现态和条件是因,动作和次态是果。


状态机的表示方法-状态迁移图(STD)

状态迁移图是一种描述 系统的状态以及相互转化关系的 图形方式。下面是一个“工单”的例子:

workorder.png

其中:


状态机的表示方法-状态迁移表

状态迁移表:用表格的形式来表示状态之间的关系。下面是“工单”的例子的简化版:

gongdanzhuangtai.png

注意事项

初学者往往会把某个“程序动作”当作状态来处理,我们称之为“伪态”。另外一个比较致命的错误是,在划分状态时,漏掉一些状态,我们称之为“漏态”。“动作”和“状态”的区别是:“动作”是不稳定的,一旦执行完就结束了;“状态”是相对稳定的,如果没有外界条件的触发,那么状态会一直持续下去。


状态模式

状态模式允许一个对象在其内部状态发生改变时,改变其行为。
状态模式中的角色包括:

关于状态模式的具体细节,请点击这里


例子-“工单”处理

1)代码结构:

daimajiegou.png

2)说明:

3)UML图

workorder_uml.png

4) 说明

5)点此下载源代码
java -jar workorder.jar


参考文档