状态机在编程中的应用
- 正则表达式(解析字符串)
- 网络协议
- 游戏设计(人物的行为)
- 自动客服(如10086)(流程类的东西)
- 处理程序语言或者自然语言的 tokenizer
- 自底向上解析语法的parser
- 各种通信协议发送方和接受方传递数据时升级版,
- 如果状态之间的转换是有概率的,就是markov 模型
如何设计一个优雅的状态机?
-
不要用判断语句,请使用函数数组。将处理函数的下标作为状态。优势在于跳转比条件跳转更快,以及代码更优雅(所有行为都在数组定义中可以看到)
-
异步回调与多线程模型之争。擅长使用异步回调的人,认为使用多线程是不懂状态机。这句话在理论上是没错,但现实中还是会不可避免的要使用多线程。主要是异步回调(状态机)模型的代码往往支离破碎,很难维护。
- 原文作者:比克王国
- 原文链接:https://wgqimut.github.io/posts/%E7%8A%B6%E6%80%81%E6%9C%BA%E5%9C%A8%E7%BC%96%E7%A8%8B%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。