前言
村里的老人说:“两个女人等于一千只鸭子。”

那如果一个程序中某个对象存在十几种状态,而每两个状态之间的转换条件也有十几个甚至几十个呢?
这类需求特别在游戏程序设计中十分常见,比如一个角色的各种状态、武器装备的各种状态等等。即使在普通的网络应用程序中,往往也会遇到状态太多的情况,所以是每一个程序员亟需掌握的必备技能。
很多新手在面对这种复杂问题时都会显得无所适从,因为简单的 if 或者 switch case 语句根本无法应对如此复杂的问题。
假如你只会用 if 语句来编写程序,并且将所有状态转换逻辑判断都放在一起去实现的话,无论对你自己还是对后来需要维护这个程序的人来说,都绝对是一个灾难。
这时我们就需要更科学的设计工具—— Finite State Machine (有限状态机)。