一:概念
描述一个对象从一个状态,经过一个事件驱动转变为另一个状态的过程,叫做一次状态迁移,一个对象所具备的所有状态迁移过程叫做状态机。
二:实例
利用astah软件做出一个状态机(状态迁移图),以线程的生命周期为例:
做成这个图的过程简单概括下是以下几点
1:确认对象的初始状态
2:明确对象所具有的所有状态
3:找到对象会经历的所有事件 ps:不是所有的事件都会让对象产生状态迁移,一个特定对象只会响应某些事件,进而发生状态改变
4:从初始状态开始,将每一个事件作用在对象上,会发生状态迁移时,连接两个状态,并在连接线上标注出事件,一个状态经历过所有事件,在再另一个状态上作用所有事件,当每个状态都经历过事件,并正确连接上了线,标注出了事件,则完成了状态机的绘制。
三:java实现的源码分析
1:stateMachine工具类代码
package stateMachine;
import java.util.HashMap;
import java.util.Map;
class StateMachine
{
int curState; //当前状态
int preState; //上一次状态
/*
* 两个map储存一次状态迁移的过程
* state 0-------事件A------->state 1
* 表示state的数据类型是int,事件是String
* 典型的内存模型是
* state 0-------事件B------->state 2
* state 0-------事件C------->st