27-状态机初探

117 阅读1分钟

状态机初探

何为状态机

状态机(State Machine),顾名思义,是一种带有状态的机器。可以用于抽象程序世界乃至真实世界中带有状态的现象。

哪些是状态机

真实世界

    • 状态:已开启(opened)、已关闭(closed)
    • 状态转义函数:开门(openDoor)、关门(closeDoor)
      • 通常状态转义函数的参数是状态转移的条件,如已开启时我们才能关门,因此参数是开启状态
      • 通常函数的返回值就是新的状态,如原本已开启的门,通过关门的动作最终使得门变成已关闭
  • 计算机
  • 空调
  • 咖啡机
  • ...所有有状态的机器

程序世界

  • 正则表达式的底层实现就是一个状态机

    正则表达式/^a+$/如何匹配字符串aaaaaaa呢?实际上,我们正则表达式的底层实现中,是将字符串的每一个字符都给一个状态机,当状态机发现传入的字符是a则继续等待下一个字符进入,直到所有字符串都匹配完成则匹配成功或者遇到一个非a字符则匹配失败。这一个状态机接受字符,返回值是匹配成功与匹配失败的新状态。

  • Vuex通过action将一个状态改变成另一个状态

  • 经典的字符串匹配算法Shift-AndKMP算法本质上也是一个状态机

  • ...