备忘录模式

博客介绍了备忘录模式,即在不破坏封装的前提下,捕获对象内部状态并在对象外保存,以便后续恢复。还给出了模式结构图,并以游戏存档和恢复为例进行程序示例,同时提供了参考来源。

备忘录模式

 

模式说明

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

模式结构图

 

程序示例

说明:游戏存档,恢复

代码:

复制代码
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

 

转载于:https://www.cnblogs.com/Siny0/p/11155789.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值