实现状态模式示例,添加任务、状态及具体状态类,增强代码可读性

This commit is contained in:
2026-01-07 10:03:18 +08:00
parent 5ddda4ee95
commit 5fbbada4b7
3 changed files with 167 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
/*
实例:
一个任务状态机
*/
class Task {
state: State;
constructor() {
this.state = new PendingState();
}
setState(state: State) {
this.state = state;
}
handle() {
this.state.handle(this);
}
}
// 状态接口
interface State {
handle(task: Task): void;
}
// 具体状态 - 待处理
class PendingState implements State {
handle(task: Task): void {
console.log("任务待处理,开始处理任务...");
task.setState(new InProgressState());
}
}
// 具体状态 - 进行中
class InProgressState implements State {
handle(task: Task): void {
console.log("任务进行中,完成任务...");
task.setState(new CompletedState());
}
}
// 具体状态 - 已完成
class CompletedState implements State {
handle(task: Task): void {
console.log("任务已完成,无法再处理。");
}
}
(function () {
console.log("============= 状态模式 =============");
const task = new Task();
task.handle();
task.handle();
task.handle();
console.log("\n=========== 状态模式结束 ===========");
})();