python版本的备忘录模式

Posted gjinwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python版本的备忘录模式相关的知识,希望对你有一定的参考价值。

# -*- coding:UTF-8 -*-
class Originator:
    def __init__(self):
        self.__state = None

    @property
    def state(self):
        return self.__state

    @state.setter
    def state(self, value):
        self.__state = value

    def create_memento(self):
        return Memento(self.__state)

    def set_memento(self, memento):
        self.__state = memento.state

    def show(self):
        print("State=%s" % self.__state)


class Memento:
    def __init__(self, state):
        self.__state = state

    @property
    def state(self):
        return self.__state


class Caretaker:
    def __init__(self):
        self.__memento = None

    @property
    def memento(self):
        return self.__memento

    @memento.setter
    def memento(self,value):
        self.__memento = value

        
if __name__=="__main__":
    o = Originator()
    o.state = "On"
    o.show()

    c = Caretaker()
    c.memento = o.create_memento()

    o.state = "Off"
    o.show()

    o.set_memento(c.memento)
    o.show()

 

以上是关于python版本的备忘录模式的主要内容,如果未能解决你的问题,请参考以下文章

C#常用代码片段备忘

Python 设计模式 — 行为型模式 — 备忘录模式

常用python日期日志获取内容循环的代码片段

Python 设计模式 — 行为型模式 — 备忘录模式

行为型设计模式之备忘录模式

行为型设计模式之备忘录模式