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

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
+49
View File
@@ -0,0 +1,49 @@
"""
实例:
一个任务状态机
"""
from abc import ABC, abstractmethod
class Task:
state: 'State'
def __init__(self):
self.set_state(PendingState())
def set_state(self, state: 'State'):
self.state = state
def handle(self):
self.state.handle(self)
# 状态接口
class State(ABC):
@abstractmethod
def handle(self, context):
pass
# 具体状态 - 待处理
class PendingState(State):
def handle(self, context):
print("任务待处理,开始处理任务...")
context.set_state(InProgressState())
# 具体状态 - 处理中
class InProgressState(State):
def handle(self, context):
print("任务处理中,完成任务...")
context.set_state(CompletedState())
# 具体状态 - 已完成
class CompletedState(State):
def handle(self, context):
print("任务已完成,无法再处理。")
if __name__ == "__main__":
print("============= 状态模式 =============")
task = Task()
task.handle()
task.handle()
task.handle()
print("\n=========== 状态模式结束 ===========")