JavaScript 中的有限状态机,第 1 部分: 设计一个小部件
2010-09-14 13:21:02 来源:WEB开发网核心提示: 有限状态机有限状态机对行为建模,在该模型中,JavaScript 中的有限状态机,第 1 部分: 设计一个小部件(5),对将来事件的响应取决于先前的事件,此领域已出现了大量学术著作(参见 参考资料),例如,当事件的种类不多或事件触发的动作总是相同时,而有限状态机的实用定义却十分简单明了,有
有限状态机
有限状态机对行为建模,在该模型中,对将来事件的响应取决于先前的事件。此领域已出现了大量学术著作(参见 参考资料),而有限状态机的实用定义却十分简单明了。有限状态机就是包含如下内容的计算机程序:
事件:程序对事件进行响应。
状态:程序在事件间的状态。
转移:对应于事件,状态间的转移。
动作:转移过程中采取动作。
变量:变量保存事件间的动作所需的值。
在行为由许多不同类型事件驱动以及对特定事件的响应取决于先前事件发生顺序的情况下,有限状态机最为有用。 驱动有限状态机的事件可以是计算机外部的(由键盘、鼠标、定时器或网络活动发起),也可以是计算机内部的(由本应用程序的其他部分或其他应用程序发起)。
状态是记起先前事件的一种方式,转移则用来组织对将来事件的响应。其中的一个状态必须要被指派为初始状态。结束状态可有可无,FadingTooltip 小部件就没有结束状态。
有限状态机的两种常见表示为:
方向图 气球状的圆圈代表状态,圆圈间的箭头线代表转移,它会被标以事件和动作。 二维表 表的行和列代表事件和状态,单元格内包含动作和转移。
上述两种表示是等价的,分别侧重于设计的不同方面。两者都十分有用,我在本文的后面都会用到。
用有限状态机开发事件驱动程序比一般的过程式编程要复杂一些;一般来说,需要更多的规则,尤其是更多的设计精力。如果处理得当,有限状态机可以使代码简单、测试迅速、维护轻松。但是,即便如此,有限状态机的复杂性使其并不能适合所有事件驱动的程序的开发。例如,当事件的种类不多或事件触发的动作总是相同时,进行额外的开发可能会得不偿失。
Tags:JavaScript 有限 状态
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接