指的是對象內部狀態發生改變對象行爲也會發生變化。
狀態模式主要解決的是當控制一個對象狀態的條件表達式過於複雜時的狀況。把狀態的判斷邏輯轉移到表示不一樣狀態的一系列類中,能夠把複雜的判斷邏輯簡化。
該模式中狀態是變化的,變化部分被作成了抽象類或接口,這讓作的目的就是把變化的轉化爲穩定的spa
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() # 當前狀態:開燈