本节书摘来异步社区《游戏编程模式》一书中的第7章,第7.1节,作者: 【美】Robert Nystrom (尼斯卓姆) 译者: 赵卫兵 , 许新星 , 姜召阳 , 陈侃 , 屈光辉 , 郑炯彬 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。
第7章 状态模式
“允许一个对象在其内部状态改变时改变自身的行为。对象看起来好像是在修改自身类。”
交代一下:我写的有些过头了,我在本章里面添加了太多东西。表面上这一章是介绍状态模式[1]的,但是我不能抛开游戏里面的有限状态机(finite state machines,FSM)而单独只谈“状态模式”。不过,当我讲到FSM的时候,我发觉我还有必要再介绍一下层次状态机(hierarchical state machine)和下推自动机(pushdown automata)。
因为有太多东西需要讲,所以我试图压缩本章的内容。本章中的代码片断没有涉及很细节的东西,所以,这些省略的部分需要靠读者来脑补。我希望它们仍然足够清楚到能让你掌握关键点(big picture)。
层次状态机和下推自动机这对术语指的是早期的人工智能。在20世纪50年代和60年代,大部分AI研究关注的是语言处理。许多现在用来解析编程语言的编译器被发明用来解析人类语言。
如果你从未听说过状态机,也不要感到沮丧。它们对于人工智能领域的开发者和编译器黑客来说非常熟悉,不过在其他编程领域可能不是那么被人熟知了。我觉得它应该被更多的人了解,因此,我将从一个不同的应用领域的视角来介绍它。