如你所知‌状态机模式‌State Machine Pattern是一种‌行为型设计模式‌它允许一个对象在其内部状态发生变化时‌动态地改变其行为‌使对象看起来像是修改了其类。一般来说到上面的状态机制表其实已经非常优雅地解决了本题。而如果从本题进行泛化或者拓展的思考如现在要处理小数存在小数点的字符点号 “.”需要使用 E 或 e 表示科学计数法等等。随着需求的不断拓展上面的制表将越来越大。每加一个状态状态表将进行指数级别的复杂度的扩充。一方面随着状态的增加频繁的修改表容易写错另一方面增加的状态可能只影响小部分的其余状态对于其他状态可能都是无用功。比如无论是加小数点还是加 EStateEnd 状态的下一步永远都是 StateEnd 状态。再看看具体的处理函数里面是一个 switch case 当然也可以改写成 if else 的形式。如果你是一个有经验的开发者。一下子就会发现这段处理代码是一个非常糟糕的 Bad Smell。因为随着状态的增加逻辑调整的修改这里的分支判断将不断地反复修改无法保证代码的健壮性。