在Java中,可以使用狀態模式來實現工作流。狀態模式是一種行為設計模式,它允許對象在內部狀態改變時改變它的行為。
首先,我們需要定義工作流的狀態。假設有三種狀態:待辦、進行中和已完成。
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(); // 打印:當前狀態:待辦
}
}
這樣,我們就使用狀態模式實現了一個簡單的工作流。每次處理工作流時,工作流上下文會根據當前狀態調用相應的處理方法,并更新狀態到下一狀態。