Python设计模式(十三)【状态模式】
来源:互联网 发布:淘宝开店要哪些照片 编辑:程序博客网 时间:2024/05/19 02:28
志向和热爱是伟大行为的双翼
"""状态模式的实现"""from __future__ import print_functionclass 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.fmstateclass 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.amstateclass 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()
运行结果如图:
0 0
- Python设计模式(十三)【状态模式】
- Python设计模式-状态模式
- python设计模式(状态模式)
- python设计模式之状态设计模式
- 设计模式学习系列十三:状态模式(State)
- Java设计模式之二十三(状态模式)
- Android设计模式(十三)--状态模式
- 大话设计模式读书笔记(十三) 状态模式
- C++设计模式十三--StatePattern(状态模式)
- 二十三种设计模式之状态模式
- python设计模式之状态模式
- 设计模式-状态模式-state-python
- python设计模式之状态模式
- 设计模式十三(外观模式,python语言实现)
- Python设计模式(二十三)【模板方法模式】
- 设计模式(十三)---适配器模式
- 十三、迭代器设计模式
- 二十三种设计模式之行为型模式之状态模式
- iOS中的round/ceil/floorf函数略解
- powerdesign+odbc+mysql
- GML C++ Camera Calibration Toolbox
- jquery.validate 验证消息提示 错行 调整
- 转 epoll的一个demo(epoll+线程池)
- Python设计模式(十三)【状态模式】
- Nexus5 如何刷机
- Base64编码及其作用
- 52. N-Queens II
- vtkInteractorStyleRubberBandPick 类简介
- Linux 学习笔记
- 使用phonegap播放音频
- lightoj 1307 Counting Triangles (二分)
- shell脚本语言学习0——概括