在不破坏内部结构的前提下捕获一个对象的内部状态,这样便可以在以后将该对象回复到原先的状态
备忘录模式最大的作用就是备份,可以保存对象的一个状态备份,这样可以在将来的某一个时刻恢复到之前的状态。
from abc import ABCMeta,abstractmethod
class Worker:
def __init__(self,name):
self.__name = name
self.__workItem = []
def addWorkItem(self,item):
self.__workItem.append(item)
def forget(self):
self.__workItem.clear()
print("工作都忘了")
def writeTodoList(self):
todoList = TodoList()
for item in self.__workItem:
todoList.writeWorkItem(item)
return todoList
def showList(self):
if(len(self.__workItem)):
print(self.__name + "工作内容有:")
for idx in range(0,len(self.__workItem)):
print(str(idx+1)+"."+self.__workItem[idx]+";")
else:
print(self.__name + "暂时没有工作\n")
def retrospect(self,todolist):
self.__workItem=todolist.getWorkItems()
print(self.__name+"想起做什么了")
class TodoList:
def __init__(self):
self.__workItems=[]
def writeWorkItem(self,item):
self.__workItems.append(item)
def getWorkItems(self):
return self.__workItems
class TodoListTaker:
def __init__(self):
self.__todoList = None
def saveTodoList(self,todoList):
self.__todoList = todoList
def getTodoList(self):
return self.__todoList
def test():
tom = Worker("Tom")
tom.addWorkItem("写文章")
tom.addWorkItem("拍电影")
tom.addWorkItem("买房子")
tom.showList()
todoListTaker = TodoListTaker()
todoListTaker.saveTodoList(tom.writeTodoList())
tom.forget();
tom.showList();
tom.retrospect(todoListTaker.getTodoList())
tom.showList()
test();
运行结果:
Tom工作内容有:
1.写文章;
2.拍电影;
3.买房子;
工作都忘了
Tom暂时没有工作
Tom想起做什么了
Tom工作内容有:
1.写文章;
2.拍电影;
3.买房子;
aaa