有限状态机与state模式
一个项目的开发过程中,需要实现一个有限状态机,于是马上想到用state模式实现,效果还算不错,但有几个问题想和各位探讨一下。
首先,使用state模式是为了消除复杂的if-else语句或者switch-case语句,但是由于各个模式间转换也会有非常多条件,状态类中if-else语句或者switch-case语句仍然避免不了。
其次,本来设计的所有的状态类都是singlton模式,不在state中存储局部状态。一、是为了方便编程,不用动态创建,也就不用考虑销毁的问题,因此消除了内存泄漏的隐患;二,有限状态机是和每个客户绑定的,不同的客户对应不同的有限状态机,我们不想让系统在状态子类上的开销太大。但这样,也带来的一个问题,由于有限状态机的状态太多,而且到现在仍未确定,也就是说,有增加新的状态子类的可能,而且会很多。为了解决这个问题,我在后期加的状态类中不再使用singlton模式,而是用普通的对象创建方式,以便在里面存储状态,也就是说用一个状态类来替代可能增加的一系列的状态转换。但这使得系统设计不纯,可能会给以后的维护带来文题。
还有,刚才看到一篇文章, http://comcamp.myrice.com/techarticles/pattern/state.htm 上面认为state模式和有限状态机本质上是不同的,不知有何深意。
小砖半块,望各位大虾于以指正。