1. 正则表达式(解析字符串)
  2. 网络协议
  3. 游戏设计(人物的行为)
  4. 自动客服(如10086)(流程类的东西)
  5. 处理程序语言或者自然语言的 tokenizer
  6. 自底向上解析语法的parser
  7. 各种通信协议发送方和接受方传递数据时升级版,
  8. 如果状态之间的转换是有概率的,就是markov 模型

如何设计一个优雅的状态机?

  1. 不要用判断语句,请使用函数数组。将处理函数的下标作为状态。优势在于跳转比条件跳转更快,以及代码更优雅(所有行为都在数组定义中可以看到)

  2. 异步回调与多线程模型之争。擅长使用异步回调的人,认为使用多线程是不懂状态机。这句话在理论上是没错,但现实中还是会不可避免的要使用多线程。主要是异步回调(状态机)模型的代码往往支离破碎,很难维护。