Python设计模式(十三)【状态模式】
2016-08-30 10:54
351 查看
志向和热爱是伟大行为的双翼
"""状态模式的实现""" from __future__ import print_function class State(object): """基本状态。这是共享的功能""" def scan(self): """扫描拨盘到下一状态""" self.pos += 1 if self.pos == len(self.stations): self.pos = 0 print("扫描... 状态是", self.stations[self.pos], self.name) class AmState(State): def __init__(self, radio): self.radio = radio self.stations = ["1250", "1380", "1510"] self.pos = 0 self.name = "AM" def toggle_amfm(self): print("切换到FM...") self.radio.state = self.radio.fmstate class FmState(State): def __init__(self, radio): self.radio = radio self.stations = ["81.3", "89.1", "103.9"] self.pos = 0 self.name = "FM" def toggle_amfm(self): print("切换到AM...") self.radio.state = self.radio.amstate class Radio(object): """一台收音机。它有一个扫描按钮,和一个AM / FM切换开关。""" def __init__(self): """我们有一个AM状态和FM状态""" """AmState继承了State""" self.amstate = AmState(self) self.fmstate = FmState(self) """初始化am状态""" self.state = self.amstate def toggle_amfm(self): self.state.toggle_amfm() def scan(self): self.state.scan() # 测试入口 if __name__ == '__main__': radio = Radio() actions = [radio.scan] * 2 + [radio.toggle_amfm] + [radio.scan] * 2 actions *= 2 for action in actions: action()
运行结果如图:
相关文章推荐
- 设计模式学习系列十三:状态模式(State)
- Python 设计模式--状态模式
- Python设计模式-状态模式
- Java设计模式菜鸟系列(十三)建模和实现状态模式
- [Python设计模式] 第16章 上班,干活,下班,加班——状态模式
- python设计模式之状态模式
- 设计模式十三(外观模式,python语言实现)
- Python设计模式(11)-状态模式
- python设计模式之状态设计模式
- Java设计模式(十三):状态模式
- Android设计模式(十三)--状态模式
- python设计模式(状态模式)
- 设计模式-状态模式-state-python
- python设计模式之状态模式
- 设计模式十七(状态模式,python语言实现)
- 设计模式系列漫谈之十三 - 访问者模式
- 设计模式学习(十三)迭代器模式-中介者模式
- 设计模式 - State Pattern(状态模式)
- 设计模式之State(状态)
- 常见设计模式的解析和实现(C++)之十三-FlyWeight模式