在过去 CPU 非常昂贵的时候,通常通过设定任务让其不间断执行以提高效率,而在今天几乎所有的计算机在大多数时间都是空闲的,运行的是事件驱动系统(Event Driven System)亦或叫响应式系统(Reactive System)。可以回忆下常听到的“中断(Interrupt)”一词。
响应式系统通常没有开始与结束的概念,而是始终运行着,只在处理事件(Event)时才获得控制权,实际执行的动作由事件与所处的状态(State)共同决定,而当前的状态与过去的事件顺序相关,因此,整个系统都是由事件驱动的。事件很大程度上以不可预测的顺序和时间到达,因此软件每次运行时调用的代码的路径很可能不同。
1 2 3 4 5 6 7 8 9 10
|
public interface IState { static final boolean HANDLED = true; static final boolean NOT_HANDLED = false;
void enter(); void exit(); boolean processMessage(Message msg);
String getName(); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public class State implements IState { protected State() {} public void enter() {} public void exit() {} public boolean processMessage(Message msg) { return false; } public String getName() { String name = getClass().getName(); int lastDollar = name.lastIndexOf('$'); return name.substring(lastDollar + 1); } }
|
Finite-state machine Wikipedia
State Machines for Event-Driven Systems
Introduction to Hierarchical State Machines (HSMs)
层次化状态机的讨论
关于 StateMachine 的那些事儿