备忘录模式

模式说明

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

模式结构图

备忘录模式

 

程序示例

说明:游戏存档,恢复

代码:

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

 

你可能感兴趣的:(备忘录模式)