发表于: 2017-04-07 23:05:29
2 1189
有限状态机是什么?
1.背景介绍
什么是有限状态机?
有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。
如图:
有限状态机一般都有以下特点:
(1)可以用状态来描述事物,并且任一时刻,事物总是处于一种状态;
(2)事物拥有的状态总数是有限的;
(3)通过触发事物的某些行为,可以导致事物从一种状态过渡到另一种状态;
(4)事物状态变化是有规则的,A状态可以变换到B,B可以变换到C,A却不一定能变换到C;
(5)同一种行为,可以将事物从多种状态变成同种状态,但是不能从同种状态变成多种状态。
2.知识剖析
在js中,新建一个对象,用这个对象的属性来模拟元素的状态,用这个对象的方法模拟元素在不同状态
的转变, 那么这个对象就是一个有限状态机是否可用有限状态机来描述,却决于:当前状态确定,有限个
状态,响应事件,在不同状态间有规律的转变。
3.常见问题
有限状态机有哪些应用场景?
解决方案
满足3点即可用:所需状态确定,有事件触发转变状态,总状态有限且转变有规律。
页面可用有限状态机的元素较多且有规律时可用:例如:开关按钮,下拉菜单,
举例:《杀人游戏的玩家死活状态、白天黑夜状态、》
4.编码实战
定义一个有三个状态的有限状态机
请见demo或视频
5.扩展思考
有限状态机有哪些优点,解决了工程中的什么问题?
有限状态机里的this是如何指向的。
有限状态机的其他写法
6.参考文献
百度百科:http://baike.baidu.com/link?url=JCWzau_ENjIdQjYvgejhF-Q5kGz3LS2b42ZbCGmR_pdDEy1A_8ILrgnGmvynx7YARL7Ep1f_lpu06gne41OQEyTt63930zZfhhUrkjKEEQ4G2D-y5AE7HV35TY7v_Xd-vPGFX24oJHOET1ljS7Uj3_
博客:http://www.ruanyifeng.com/blog/2013/09/finite-state_machine_for_javascript.html
《javascript高级程序设计》
博客园:http://www.cnblogs.com/lyzg/p/5058335.html
github:https://github.com/jakesgordon/javascript-state-machine
7.更多讨论
下面是一起讨论的时间
鸣谢
感谢大家观看</p>
BY : 刘其勇 | 龚家豪
评论