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

最新文章

  1. HTTP Header
  2. Eclipse 的快捷键以及文档注释、多行注释的快捷键
  3. 使自定义事件支持多绑定 js
  4. Codeforces 475 B Strongly Connected City【DFS】
  5. php-PHP试题
  6. 解决xp共享的批处理文件
  7. HTML5数据存储
  8. windows 和linux 同步api对比
  9. springMVC拦截器简单配置
  10. Vue.js组件之同级之间的通信
  11. C++ 虚指针、成员变量与类对象的偏移地址
  12. 一秒搞定mysql的远程登录
  13. 桶排序/基数排序(Radix Sort)
  14. mybatis中autoCommit自动提交事务
  15. Ocelot中使用Butterfly实践
  16. XML与HTML的作用不同
  17. MyBatis 集合操作语法范例:配合SQL的in关键字
  18. iostat磁盘监控工具
  19. 关于java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.的问题
  20. Catch That Cow--POJ3278

热门文章

  1. 【js】横/纵向无缝滚动
  2. 【css】css规范
  3. 微信硬件平台(七)微信开发--如何存储并定时更新access_token
  4. 从零开始的ESP8266探索(1)-使用Server功能搭建Web Server
  5. Emacs 中使用中文插件 eim
  6. js获取访问IP、地区、、当前操作浏览器
  7. 使用Windows Live Writer撰写的第一篇博文
  8. Java线程池实现原理与技术(ThreadPoolExecutor、Executors)
  9. Java系统高并发之Redis后端缓存优化
  10. 从 0 到 1 实现 React 系列 —— 5.PureComponent 实现 && HOC 探幽