python设计模式第二十二天【备忘录模式】
2024-08-23 03:54:57
1.应用场景
(1)能保存对象的状态,并能够恢复到之前的状态
2.代码实现
#!/usr/bin/env python #! _*_ coding:UTF-8 _*_ class Originator(object): '''这时基本类''' def __init__(self, state): self.state = state def createMemento(self): '''创建备忘录''' return Memento(self.state) def setMemento(self, memento): '''从备忘录中恢复''' self.state = memento.state class Memento(object): '''这时备忘录类''' def __init__(self, state): self.state = state class Caretaker(object): '''这时备忘录管理类''' def __init__(self): pass def setMemento(self, memento): '''将备忘录作为引用''' self.memento = memento def getMemento(self): '''从管理中获取引用''' return self.memento if __name__ == "__main__": originator = Originator("state1") print originator.state memento = originator.createMemento() caretaker = Caretaker() caretaker.setMemento(memento) originator.state = "state2" print originator.state originator.setMemento(caretaker.getMemento()) print originator.state
结果:
/Users/liudaoqiang/PycharmProjects/numpy/venv/bin/python /Users/liudaoqiang/Project/python_project/day22_memento/memento_test.py state1 state2 state1 Process finished with exit code 0
最新文章
- HTTP Header
- Eclipse 的快捷键以及文档注释、多行注释的快捷键
- 使自定义事件支持多绑定 js
- Codeforces 475 B Strongly Connected City【DFS】
- php-PHP试题
- 解决xp共享的批处理文件
- HTML5数据存储
- windows 和linux 同步api对比
- springMVC拦截器简单配置
- Vue.js组件之同级之间的通信
- C++ 虚指针、成员变量与类对象的偏移地址
- 一秒搞定mysql的远程登录
- 桶排序/基数排序(Radix Sort)
- mybatis中autoCommit自动提交事务
- Ocelot中使用Butterfly实践
- XML与HTML的作用不同
- MyBatis 集合操作语法范例:配合SQL的in关键字
- iostat磁盘监控工具
- 关于java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.的问题
- Catch That Cow--POJ3278
热门文章
- 【js】横/纵向无缝滚动
- 【css】css规范
- 微信硬件平台(七)微信开发--如何存储并定时更新access_token
- 从零开始的ESP8266探索(1)-使用Server功能搭建Web Server
- Emacs 中使用中文插件 eim
- js获取访问IP、地区、、当前操作浏览器
- 使用Windows Live Writer撰写的第一篇博文
- Java线程池实现原理与技术(ThreadPoolExecutor、Executors)
- Java系统高并发之Redis后端缓存优化
- 从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 &;&; HOC 探幽