【修真院web小课堂】有限状态机是什么?

1.背景介绍

有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机, 是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。


其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在计算机科学中, 有限状态机被广泛用于建模应用行为、硬件电路系统设计、软件工程,编译器、网络协议、和计算与语言的研究。

有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物。它 是一个数学模型。是一个抽象机器,在任何时候都可以处于有限数量的状态之一。响应某些外部输入, FSM可以从一个状态转换到另一个状态; 从一种状态到另一种状态的变化称为过渡。 状态机的行为可以在现代社会中的许多设备中观察到,这些设备根据它们呈现的事件序列执行预定的一系列行为。 例如自动售货机,当存放适当的硬币组合时分配产品,当车辆等待时改变顺序的交通灯等。


在我们前端开发中,我们可以套用有限状态机模型,将业务流程状态化,划分状态和相应的触发事件与动作,利用生命周期事件进行控制与执行


2.知识剖析

我们来看一下阮一峰对有限状态机的描述


它有三个特征:


状态总数(state)是有限的。
任一时刻,只处在一种状态之中。
某种条件下,会从一种状态转变(transition)到另一种状态。
有限状态机一般都有以下特点:


(1)可以用状态来描述事物,并且任一时刻,事物总是处于一种状态;


(2)事物拥有的状态总数是有限的;


(3)通过触发事物的某些行为,可以导致事物从一种状态过渡到另一种状态;


(4)事物状态变化是有规则的,A状态可以变换到B,B可以变换到C,A却不一定能变换到C;


(5)同一种行为,可以将事物从多种状态变成同种状态,但是不能从同种状态变成多种状态。




3.常见问题

有限状态机有如何应用在具体场景?


4.解决方案

满足3点即可用:所需状态确定,有事件触发转变状态,总状态有限且转变有规律。


页面可用有限状态机的元素较多且有规律时可用:例如:开关按钮,下拉菜单,


还有任务中杀人游戏的玩家死活状态、白天黑夜状态等


5.编码实战

信号灯


6.参考文献

参考一:有限状态机库

参考二:js与有限状态机

参考三:阮一峰的有限状态机

7.更多讨论

1.有限状态机有哪些优点?

答:有限状态机的写法,逻辑清晰,表达力强,有利于封装事件。一个对象的状态越多、发生的事件越多,就越适合采用有限状态机的写法。

2.为什么声明了有限状态机没有效果?

答:使用有限状态机的第一步是要引入有限状态机的js库,不然是无法使用的。

3.可以用原生的js来模仿有限状态机吗?

答:可以,通过多个条件语句来触发事件和限制状态,不过推荐这种做法,这样会导致代码臃肿和难以维护。


PPT:https://it-xzy.github.io/WEB-NEW/2018-6-14-C-js4-tds.html
腾讯视频:https://v.qq.com/x/page/t0690yy3a26.html


猜你喜欢

转载自blog.csdn.net/tianxintiandisheng/article/details/80711277
今日推荐