squirrel foundation 松鼠状态机的基本概念

395 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

要了解松鼠状态机,我们首先我们要了解有限状态机的概念。

有限状态机的概念

有限状态机(英文名称是FSM)的作用,就是为对象的行为进行建模的工具。

说的通俗一点,它就是用来描述某个对象,在它所属的生命周期内,所经历的一些状态的变化,也就是状态序列的描述。另外还会描述这个对象是如何响应来自外界的各种事件的。

举例来说,当我们接待客人就餐,一系列流程包括:安排包房、接收点餐、制作菜品、上菜、欢送客人、收拾餐桌...等等状态,这些状态之间的转换的控制、触发的事件监听,我们都可以使用这个框架进行处理。

状态机构成因素

针对状态机,有以下主要的四个要素需要我们留意:现态、条件、动作、次态。

可以简单理解为:“现态”和“条件”是因,“动作”和“次态”是果。

现态

就是指对象当前所处的状态,比如菜品制作。

条件

也可以认为这是一种“事件”。当我们设置的某个条件被满足的时候,框架将会触发一个动作,或者执行一次状态的迁移。比如说菜品制作完成之后上菜。

动作

当上述条件被满足之后所执行的一种操作。

在动作执行完成之后,对象的状态可以迁移到新的状态,但是也可以依旧保持原来的状态。比如说菜品制作完成之后,完全可以由客人决定上菜与否。

另外,动作因素不是必需的。在条件被满足之后,也可以不执行任何动作,而是直接迁移到新的状态。

比如说上菜完成之后,客人可能临时有事,没有吃,直接就走了,进入到“欢送客人”状态。可能不合理,但是这 也是真实可能存在的情况。

次态

次态就是在条件被满足之后,对象需要迁往的新状态。“次态”并不是独立存在的,是相对于“现态”而言的。

于是我们就可以想到,当转移到“次态”之后,这个“次态”就变成了当前对象的“现态”了。

状态机的动作类型

状态机的动作的作用就是用来监听动作,同时响应事件

进入动作

当对象在进入某个状态的时候进行的动作。

退出动作

对象在退出某个状态的时候执行。

输入动作

这个动作依赖于当前状态和输入条件。

转移动作

在进行某两个状态之间的特定转移的时候进行。

总结

这篇文章介绍了要松鼠状态机之前的一些必备的知识。