# -*- 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()