"""
状态模式
一个复杂对象改变它的内在状态则允许改变它的行为
应用场景:一个复杂对象包含有很多个分支,则把这些分支抽象成一个个子类,该对象只需要去调用子类的公共接口。客户端调用时,可以
根据状态来选择哪个子类来执行分支
"""
from abc import ABCMeta, abstractmethod
class State(object):
"""
状态抽象类
"""
__metaclass__ = ABCMeta
def __init__(self):
pass
@abstractmethod
def handle(self, context):
pass
class StateA(State):
def __init__(self):
super(StateA, self).__init__()
def handle(self, context):
print("StateA:")
print(context.status)
class StateB(State):
def __init__(self):
super(StateB, self).__init__()
def handle(self, context):
print("StateB:")
print(context.status)
class Context(object):
def __init__(self, state):
self._status = None
self._state = state
@property
def status(self):
return self._status
@status.setter
def status(self, status):
self._status = status
@property
def state(self):
return self._state
@state.setter
def state(self, state):
self._state = state
def handle(self):
self._state.handle(self)
if __name__ == '__main__':
state1 = StateA()
state2 = StateB()
context = Context(state1)
context.status = "normal"
context.handle()
print("")
context.state = state2
context.status = "error"
context.handle()
状态模式(python)
最新推荐文章于 2024-05-16 08:35:41 发布