海伦教育网,完蛋了惹上恶魔王子,win10镜像
状态模式可以看做是在运行时改变对象行为的一种方式。状态模式允许对象在其内部状态变化时改变其行为,此时感觉就像对象本身已经改变了一样。
参与者:
优点:
缺点:
简单示例:
""" 以电饭煲为例,它有三种状态或者说三种功能:煮饭、煮汤、煮粥 指定好电饭煲的状态后,它就开始以对应模式进行工作 """ from abc import abcmeta, abstractmethod class cookstate(metaclass=abcmeta): """state接口:定义状态对象共有的接口,即需要煮什么""" @abstractmethod def cook(self): pass class cookrice(cookstate): """concretesate对象:煮饭""" def cook(self): print('cooking rice...') class cooksoup(cookstate): """concretesate对象:煮汤""" def cook(self): print('cooking soup...') class cookporridge(cookstate): """concretesate对象:煮粥""" def cook(self): print('cooking porridge...') class cooker: """context对象:电饭煲,根据自身状态决定煮什么""" def __init__(self): # 定义本身具有的几种状态,或者电饭煲的几种功能 self.states = [cookrice(), cooksoup(), cookporridge()] self.state_index = 0 def switch_state(self): """切换电饭煲的状态""" if self.state_index == (len(self.states) - 1): self.state_index = 0 else: self.state_index += 1 def start_cook(self): """开始工作""" self.states[self.state_index].cook() if __name__ == '__main__': cooker = cooker() cooker.start_cook() cooker.switch_state() cooker.start_cook()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论