Python设计模式:状态模式
发布时间:2020-12-20 10:06:34 所属栏目:Python 来源:网络整理
导读:状态模式可以看做是在运行时改变对象行为的一种方式。状态模式允许对象在其内部状态变化时改变其行为,此时感觉就像对象本身已经改变了一样。 参与者: State接口: State基类,定义不同状态共同需要执行的接口。 ConcreteSate对象: State基类的子类,不同
状态模式可以看做是在运行时改变对象行为的一种方式。状态模式允许对象在其内部状态变化时改变其行为,此时感觉就像对象本身已经改变了一样。 参与者:
优点:
缺点:
简单示例: """ 以电饭煲为例,它有三种状态或者说三种功能:煮饭、煮汤、煮粥 指定好电饭煲的状态后,它就开始以对应模式进行工作 """ from abc import ABCMeta,abstractmethod class CookState(metaclass=ABCMeta): State接口:定义状态对象共有的接口,即需要煮什么""" @abstractmethod def cook(self): pass class CookRice(CookState): ConcreteSate对象:煮饭""" print('Cooking rice...') CookSoup(CookState): ConcreteSate对象:煮汤Cooking soup... CookPorridge(CookState): ConcreteSate对象:煮粥Cooking porridge... Cooker: Context对象:电饭煲,根据自身状态决定煮什么def __init__(self): # 定义本身具有的几种状态,或者电饭煲的几种功能 self.states = [CookRice(),CookSoup(),CookPorridge()] self.state_index = 0 switch_state(self): 切换电饭煲的状态""" if self.state_index == (len(self.states) - 1): self.state_index = 0 else: self.state_index += 1 start_cook(self): 开始工作 self.states[self.state_index].cook() if __name__ == __main__: cooker = Cooker() cooker.start_cook() cooker.switch_state() cooker.start_cook() ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |