Java状態モードを使用して、ワークフローを実装する方法は何ですか?

Javaでは、状態パターンを使用してワークフローを実装することができます。状態パターンは、オブジェクトが内部の状態を変更するときにその振る舞いを変えることができる一種の行動デザインパターンです。

最初に、ワークフローの状態を定義する必要があります。3つの状態、つまり未完了、進行中、完了があると仮定します。

public interface WorkflowState {
    void handle(WorkflowContext context);
}

public class TodoState implements WorkflowState {
    @Override
    public void handle(WorkflowContext context) {
        System.out.println("当前状态:待办");
        // 处理待办事项
        // 设置下一状态
        context.setState(new InProgressState());
    }
}

public class InProgressState implements WorkflowState {
    @Override
    public void handle(WorkflowContext context) {
        System.out.println("当前状态:进行中");
        // 处理进行中事项
        // 设置下一状态
        context.setState(new CompletedState());
    }
}

public class CompletedState implements WorkflowState {
    @Override
    public void handle(WorkflowContext context) {
        System.out.println("当前状态:已完成");
        // 处理已完成事项
        // 设置下一状态
        context.setState(new TodoState());
    }
}

次は、現在の状態を保存し、処理状態を扱う方法を定義する必要があります。

public class WorkflowContext {
    private WorkflowState state;
    
    public WorkflowContext() {
        this.state = new TodoState();
    }
    
    public void handle() {
        state.handle(this);
    }
    
    public WorkflowState getState() {
        return state;
    }
    
    public void setState(WorkflowState state) {
        this.state = state;
    }
}

最後に、私たちはワークフロー上下文を使用してワークフローを処理することができます。

public class Main {
    public static void main(String[] args) {
        WorkflowContext context = new WorkflowContext();
        
        context.handle(); // 打印:当前状态:待办
        context.handle(); // 打印:当前状态:进行中
        context.handle(); // 打印:当前状态:已完成
        context.handle(); // 打印:当前状态:待办
    }
}

これにより、私たちは状態パターンを使用して単純なワークフローを実装しました。ワークフローを処理するたびに、ワークフローコンテキストは現在の状態に基づいて適切な処理方法を呼び出し、次の状態に更新します。

bannerAds