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