接口 StateMachineHandler<T>

所有已知实现类:
DefaultStateMachineHandler, RedoStateMachineHandler, UndoStateMachineHandler
函数接口:
这是一个函数接口, 因此可用作 lambda 表达式或方法引用的赋值目标。

@FunctionalInterface public interface StateMachineHandler<T>
状态机扩展处理器
作者:
wjybxx date - 2023/12/3
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    beforeChangeState(StateMachineTask<T> stateMachineTask, Task<T> curState, Task<T> nextState)
    该方法在进入新状态前调用 1.两个参数最多一个为null 2.可以设置新状态的黑板和其它数据 3.用户此时可为新状态分配上下文(黑板、取消令牌、共享属性);同时清理前一个状态的上下文 4.用户此时可拿到新状态ChangeStateArgs,后续则不可 5.如果task需要感知redo和undo,则由用户将信息写入黑板
    default void
    beforeEnter(StateMachineTask<T> stateMachineTask)
    handler可能也有需要初始化的数据。
    default boolean
    isReady(StateMachineTask<T> stateMachineTask, Task<T> curState, Task<T> nextState)
    是否可以切换到下一个状态
    default boolean
    onNextStateAbsent(StateMachineTask<T> stateMachineTask, Task<T> preState)
    当状态机没有下一个状态时调用该方法,以避免无可用状态 注意: 1.状态机启动时不会调用该方法 2.如果该方法返回后仍无可用状态,将触发无状态逻辑
    default void
    resetForRestart(StateMachineTask<T> stateMachineTask)
    handler可能也有需要重置的数据。
  • 方法详细资料

    • resetForRestart

      default void resetForRestart(StateMachineTask<T> stateMachineTask)
      handler可能也有需要重置的数据。
      参数:
      stateMachineTask - 状态机
    • beforeEnter

      default void beforeEnter(StateMachineTask<T> stateMachineTask)
      handler可能也有需要初始化的数据。
      参数:
      stateMachineTask - 状态机
    • isReady

      default boolean isReady(StateMachineTask<T> stateMachineTask, @Nullable Task<T> curState, Task<T> nextState)
      是否可以切换到下一个状态
      参数:
      stateMachineTask - 状态机
      curState - 当前状态
      nextState - 下一个状态
      返回:
      如果可以切换则返回true,否则返回false
    • beforeChangeState

      void beforeChangeState(StateMachineTask<T> stateMachineTask, Task<T> curState, Task<T> nextState)
      该方法在进入新状态前调用 1.两个参数最多一个为null 2.可以设置新状态的黑板和其它数据 3.用户此时可为新状态分配上下文(黑板、取消令牌、共享属性);同时清理前一个状态的上下文 4.用户此时可拿到新状态ChangeStateArgs,后续则不可 5.如果task需要感知redo和undo,则由用户将信息写入黑板
      参数:
      stateMachineTask - 状态机
      curState - 当前状态
      nextState - 下一个状态
    • onNextStateAbsent

      default boolean onNextStateAbsent(StateMachineTask<T> stateMachineTask, Task<T> preState)
      当状态机没有下一个状态时调用该方法,以避免无可用状态 注意: 1.状态机启动时不会调用该方法 2.如果该方法返回后仍无可用状态,将触发无状态逻辑
      参数:
      stateMachineTask - 状态机
      preState - 前一个状态,用于计算下一个状态
      返回:
      用户是否执行了【状态切换】或【停止状态机】