zoukankan      html  css  js  c++  java
  • 备忘录模式

    模式说明

    所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。

    模式结构图

    程序示例

    说明:游戏存档,恢复

    代码:

    class Memonto(object):
        _blood=0
        _magic=0
        def setBlood(self,blood):
            self._blood=blood
        def setMagic(self,magic):
            self._magic=magic
        def getBlood(self):
            return self._blood
        def getMagic(self):
            return self._magic
    
    
    class Caretakor(object):
        _memonto = Memonto()
        def setMemonto(self,memonto):
            self._memonto=memonto
        def getMemonto(self):
            return self._memonto
    
    
    class Original(object):
        _blood=0
        _magic=0
        def __init__(self,blood,magic):
            self._blood = blood
            self._magic = magic 
    
        def setBlood(self,blood):
            self._blood=blood
        def setMagic(self,magic):
            self._magic=magic
    
        def display(self):
            print 'blood:%s  magic:%s' % (self._blood,self._magic)
    
        def saveMemonto(self):
            memonto = Memonto()
            memonto.setBlood(self._blood)
            memonto.setMagic(self._magic)
            return memonto
    
        def restoreMemonto(self,memonto):
            self._blood=memonto.getBlood()
            self._magic=memonto.getMagic()
    
    
    if __name__=="__main__":
        caretakor = Caretakor()
        original = Original(100,100)
        caretakor.setMemonto(original.saveMemonto())
        original.display()
    
        original.setBlood(20)
        original.setMagic(30)
        original.display()
        
        original.restoreMemonto(caretakor.getMemonto())
        original.display()
        

    运行结果:

    参考来源:

    http://www.cnblogs.com/chenssy/p/3679190.html

    http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html

  • 相关阅读:
    find文件及目录后的一些操作
    Firefox关闭GET请求到detectportal.firefox.com网站的方法
    Shell脚本自定义批量生成ip
    Nginx关闭危险的HTTP请求
    个人总结
    软件工程第二次作业--结对编程
    软件工程第一次作业
    C#中使用存储过程返回值的问题(转)
    使用SqlDataAdapter时,需要注意的几点(转)
    Sql连接查询(转)
  • 原文地址:https://www.cnblogs.com/cotton/p/3935175.html
Copyright © 2011-2022 走看看