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

  • 相关阅读:
    Cannot change version of project facet Dynamic web module to 3.0
    mybatis
    mybatis逆向工程工具
    mybatis和jdbc分析
    分析mybatis和jdbc的作用,已经原理
    JDBC使用步骤
    MyBatis架构设计及源代码分析系列(一):MyBatis架构
    MyBatis的foreach语句详解
    vue.js使用elemnetUi
    vue.js路由嵌套传参
  • 原文地址:https://www.cnblogs.com/Siny0/p/11155789.html
Copyright © 2011-2022 走看看