状态机
状态机的概念是来自硬件的。描述一系列状态转换的电路叫状态机。主要用来实现一个数字系统设计中的控制部分。运行模式类似于CPU,但和CPU相比,具有结构简单、易读易懂等特点。
对于无限个状态(无限状态机,Infinite State Machine,ISM)是难以检证的,所以这里所说的状态机通常是指有限状态机或有穷状态机,即Finite State Machine,FSM。
状态模式可以允许客户端改变状态的转换行为,而状态机则是能够自动改变状态,状态机是一个比较独立的而且复杂的机制。
状态机看上去就像是一个有向图,其中状态是图的节点,而状态转换则是图的边。
此外这些状态中还必须有一个初始状态和至少一个接受状态。
但是由于一些原因并不会执行初始化(initialization),而是直接通过一个节点进入状态是允许的,则此节点称之为进入节点(Entry Point)。
进入终了状态的节点称为退出节点(Exit Point)
转移(Transitions)是两个状态之间的一种关系,表示对象将在源状态(Source State)中,因为预先定义的触发器的发生导致警界条件满足时进入目标状态(Target State)。
触发器(Trigger):是转移的诱因,可以是一个信号,事件、条件变化(a change in some condition)和时间表达式。
警界条件(Guard Condition):当警界条件满足时,事件才会引发转移(Transition)。
结果(Effect):对象状态转移后的结果。
状态可以有返回自身状态的转移,称之为自身转移(Self-Transitions)。
动作(Actions)是一个可执行的原子操作,也就是说动作是不可中断的,其执行时间是可忽略不计的。
源状态 Source State :即受转换影响的状态
目标状态 Target State :当转换完成后,对象的状态
触发事件 (Trigger) Event :用来为转换定义一个事件,包括调用、改变、信号、时间四类事件
监护条件 (Guard Condition) :布尔表达式,决定是否激活转换、
动作 (Action) :转换激活时的操作
对象状态转移后的结果显示在转移线上,如果目标状态有许多转移,而且每个转移有相同的结果,这时把转移后的结果(Effect)展示在目标状态中(Target State)更好一些,可以定义进入动作(Entry Action )和退出动作(Exit Action)
嵌套在另外一个状态中的状态称之为子状态(sub-state),一个含有子状态的状态被称作组合状态(Compound States)。
历史状态(History States)是一个伪状态(Pseudostate),其目的是记住从组合状态中退出时所处的子状态,当再次进入组合状态,可直接进入这个子状态,而不是再次从组合状态的初态开始。
并发区域(Concurrent Regions)
状态图可以分为区域,而区域又包括退出或者当前执行的子状态。说明组合状态在某一时刻可以同时达到多个子状态。
状态,存储了关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。
转移指示状态变更,并且用必须满足确使转移发生的条件来描述它。
动作是在给定时刻要进行的活动的描述。有多种类型的动作:
进入动作(entry action):在进入状态时进行
退出动作:在退出状态时进行
输入动作:依赖于当前状态和输入条件进行
转移动作:在进行特定转移时进行
来源:oschina
链接:https://my.oschina.net/u/660460/blog/652477