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

  • 相关阅读:
    flowable的多人会签和一票否决
    排序
    Java数组的三种打印方式
    CF446B DZY Loves Modification(优先队列)
    2019CCPC哈尔滨 Interesting Permutation(思维)
    2019沈阳网络赛 Fish eating fruit (换根dp)
    AcWing287 积蓄程度(换根dp)
    CF1358E Are You Fired?(前缀和+贪心)
    android android studio error
    cocos2D-X 打包
  • 原文地址:https://www.cnblogs.com/cotton/p/3935175.html
Copyright © 2011-2022 走看看