package com.serliunx.statemanagement.machine.external; import com.serliunx.statemanagement.machine.StateEventRegistry; import com.serliunx.statemanagement.machine.StateMachine; import com.serliunx.statemanagement.machine.handler.StateHandler; import com.serliunx.statemanagement.machine.handler.StateHandlerWrapper; import java.util.List; /** * 可变的、灵活的状态机, 支持在运行的过程中动态的增减状态及状态切换的事件 * * @author SerLiunx * @since 2025/3/28 */ public interface FlexibleStateMachine extends StateMachine, StateEventRegistry { /** * 获取指定状态下所有的离开事件处理器. *

* 通过 {@link StateEventRegistry#whenLeave(Object, StateHandler)} 等方法注册. * * @param state 状态 * @return 所有与指定状态相关的离开事件处理器 */ List> allLeaveHandlers(S state); /** * 获取指定状态下所有的进入事件处理器. *

* 通过 {@link StateEventRegistry#whenEntry(Object, StateHandler)} 等方法注册. * * @param state 状态 * @return 所有与指定状态相关的进入事件处理器 */ List> allEntryHandlers(S state); /** * 获取指定状态下所有的交换事件处理器. *

* 通过 {@link StateEventRegistry#exchange(Object, Object, StateHandler)} 等方法注册. * * @param from 源状态 * @param to 目标状态 * @return 所有与指定状态相关的交换事件处理器 */ List> allExchangeHandlers(S from, S to); }