我从状态模式的典型实现中收集到的是:
问题: 表示对象O,其行为根据其当前状态进行更改.
解决方案:
1.设S,此对象O中的另一个对象表示状态
2.对象S将调用O
3 的相应操作.对象S将决定对象O的下一个状态
我关心的主要是#3.状态转换表基本上分布在所有状态.我已经看到这些解决方案很快就会变得很麻烦.这些状态不是指示器,而是包含有关状态机的过多信息.
即使#2困扰我,我想它是相当合理的(摩尔机器.)我看到的唯一问题出现在错误修复/调试过程中:代码导航/理解变得困难,直到将所有状态映射提交到内存.
以下实施会更精确吗?
将状态表示为枚举,并且对象基于枚举所持有的值来决定操作.的state transitions是在表中(δ,一个状态转换函数),其当前状态的地图至下一状态.这state transition table也保持了要执行的动作(Mealy机器)