通过映射表进行状态转换示例

108 阅读1分钟
import java.util.HashMap;
import java.util.Map;

public class StateMachine {
    // 定义映射表,将当前状态映射到其合法的目标状态列表
    private Map<String, String[]> stateTransitions;

    public StateMachine() {
        // 初始化映射表
        stateTransitions = new HashMap<>();
        stateTransitions.put("状态1", new String[]{"合法目标状态1", "合法目标状态2"});
        stateTransitions.put("状态2", new String[]{"合法目标状态3", "合法目标状态4"});
        // 添加其他状态及其合法目标状态
    }

    public boolean validateTransition(String currentState, String targetState) {
        // 查找当前状态在映射表中的合法目标状态列表
        String[] validTransitions = stateTransitions.get(currentState);
        
        // 验证目标状态是否在合法目标状态列表中
        if (validTransitions != null) {
            for (String validTransition : validTransitions) {
                if (validTransition.equals(targetState)) {
                    return true;
                }
            }
        }
        return false;
    }

    public static void main(String[] args) {
        StateMachine stateMachine = new StateMachine();
        
        // 示例:验证从状态1到状态3的转换是否合法
        boolean isValidTransition = stateMachine.validateTransition("状态1", "合法目标状态3");
        System.out.println(isValidTransition);  // 输出结果应为 true 或 false
    }
}