写在前面
状态机是指某事物具有有限状态,且在这些状态之间相互转换的抽象,比如门的开是一个状态,关又是一个状态。本文就一起来看下。
1:状态机的术语
1.1:state
状态,即当前所处的状态,如汽车是熄火的(熄火的就是汽车所处的state)
,汽车是发动的(发动的就是汽车所处的state)
。
1.2:action
动作,或者叫做事件,来将事物从一个状态转换为另外一个状态。比如当前汽车是熄火的,则可以通过点击start按钮
这个action
来发动汽车。
1.3:transition
当有了action后,事物从一个状态转换为另外一个状态的过程就叫做transition,所以transition是对一个状态变化过程的描述。
1.4:transition state
当有了action,事物并非直接就会执行transition来从一个状态转换为另外一个状态,而是需要满足一定的条件
,这个条件就是transition state,比如通过点击start按钮
这个动作action
来发动汽车,如果你的指纹不对,是没有办法发动汽车的,这里的你的指纹匹配系统录入的指纹
就是transition state。伪代码的话就像下边这样:
void action(String action, String transitionState) {
if (判断transitionState正确) {
// 执行transition,完整状态装换
doTransansition(action);
}
}
2:实例
如下电风扇使用状态机来表示:
Java 线程状态机表示:
密码柜使用状态机表示:
密码柜例子,程序实现参考这里 。运行结果如下:
写在后面
参考文章列表
超清晰的java线程状态机图 。
什么是状态机?一篇文章就够了 。