python 状态模式,,什么是状态模式?指的


什么是状态模式?

指的是对象内部状态发生改变对象行为也会发生变化。
状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。

UML类图

技术图片

封装变化

该模式中状态是变化的,变化部分被做成了抽象类或接口,这让做的目的就是把变化的转化为稳定的

代码示例

import abc‘‘‘例子:灯的状态‘‘‘class AbsStatus(abc.ABC):    @abc.abstractmethod    def action(self, context): ...class Bulb:    def __init__(self, status: AbsStatus):        self._status = status    @property    def status(self):        return self._status    @status.setter    def status(self, value: AbsStatus):        self._status = value    def action(self):        self.status.action(self)class OnStatus(AbsStatus):    def action(self, context):        print("当前状态:开灯")        context.status = OffStatus()class OffStatus(AbsStatus):    def action(self, context):        print("当前状态:关灯")        context.status = OnStatus()buld = Bulb(OffStatus())buld.action()     # 当前状态:关灯buld.action()     # 当前状态:开灯buld.action()    # 当前状态:关灯buld.action()    # 当前状态:开灯

python 状态模式

评论关闭