DFighting
2020-11-21
不太赞同老师的这种抽象方式,状态机中的每个状态应该具有事件、触发条件、转移(方法)列表,每一个应该都可以抽象为一个接口或者泛型类,状态机作为一个单例这个没问题,但是状态机应该只是作为一个状态的注册工厂,里面具有的应该是多种状态,状态间的流转才是状态机最重要的功能抽象。score放在状态和状态机中都不合适,这应该是状态机操纵的一个对象/资源,应该单独抽象出来,在状态间流转
作者回复: 好吧
共 4 条评论
28
进击的巨人
2020-11-27
感觉状态模式就是一个策略模式
作者回复: 嗯嗯
共 2 条评论
2
吃饭睡觉打酱油
2020-06-20
老师,在使用状态机的时候,初始状态应该是可以支持初始化的吧。
作者回复: 嗯嗯
1
Geek_78eadb
2020-11-28
课后题: 1. 使用抽象工厂模式实现 Action 类:即根据不同的状态实现 ObtainMushRoom 等动作类,比如 ObtainMushRoom 的初始化需要传入目前状态和目前分数, ObtainMushRoom 可以利用状态机的查表法进行状态转移和其它动作
作者回复: 嗯嗯 ������
共 2 条评论
打工人233号
2020-11-13
如果一种状态转移对应多种状态如何处理呢?
作者回复: 这个好像没有这种情况吧
慕枫技术笔记
2020-07-29
查表法在状态新增的情况下怎么做到不修改代码的?
作者回复: 没法做到一点都不修改代码的哦
共 3 条评论
pippin
2020-04-13
查表法的这个数组有问题吧,transitionTable[0][0]应该是SMALL吧。这里应该是写错了吧。private static final State[][] transitionTable = { {SUPER, CAPE, FIRE, SMALL}, {SUPER, CAPE, FIRE, SMALL}, {CAPE, CAPE, CAPE, SMALL}, {FIRE, FIRE, FIRE, SMALL} };
作者回复: 没有啊,你看看上面那个表格
共 2 条评论
张先生丶
2020-03-30
关于课堂讨论,可以在接口和实现类中间加一层抽象类解决此问题,抽象类实现状态接口,状态类继承抽象类,只需要重写需要的方法即可
共 6 条评论
150
Darren
2020-04-14
Java中Spring也有有限状态机的框架 :https://github.com/spring-projects/spring-statemachine
57
下雨天
2020-03-30
课后题 最小接口原则 具体做法:状态类只关心与自己相关的接口,将状态接口中定义的事件函数按事件分类,拆分到不同接口中,通过这些新接口的组合重新实现状态类即可!
共 1 条评论
34