实现状态模式示例,添加任务、状态及具体状态类,增强代码可读性
This commit is contained in:
@@ -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=========== 状态模式结束 ===========");
|
||||
})();
|
||||
Reference in New Issue
Block a user