一.状态机简单介绍
软件设计中的状态机概念,一般是指有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
FSM(有限状态机)可以使用UML中的状态机图来表示。也可以使用类似以下格式的状态转移表等等。下面展示最常见的表示:当前状态(B)和事件(Y)的组合指示出下一个状态(C)。
状态转移表 |
|||
当前状态 → |
状态 A |
状态 B |
状态 C |
事件 X |
… |
… |
… |
事件 Y |
… |
状态 C |
… |
事件 Z |
… |
… |
… |
状态机有两个很重要的概念: 状态、事件。以下是一个CD机的简单例子:
CD机状态转移表 |
|||
状态 → |
播放 |
暂停 |
停止 |
按播放键 |
… |
播放 |
播放 |
按停止键 |
停止 |
停止 |
… |
按暂停键 |
暂停 |
… |
… |
通过这个表,我们可以很直观的来理解状态机,如下:
1. 简单的CD机一般有三种状态: 播放、暂停、停止
2. 我们对CD机的操作,就是事件,简单来说有三种事件:按播放、停止、暂停按键。
3.在CD机不同的状态下,发生不同的事件(按不同的按钮),触发的事情以及CD机下一步的状态(即状态转移)是不一样的。
4. 按照以上表格,假如CD机当前状态是“播放”,这时候,我们按播放键,它会保持“播放”状态,不会发生状态转移,如果按暂停键,则会触发状态转移,CD机状态转移为“暂停”状态。同理,按停止键会转移为停止状态。
状态转移表:
输入事件---》|当前状态|----》响应ACTION(以及跳转)
【状态可以分层 |子状态】--》响应ACTION等