• 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