“如果能重来我要选李白···”,“曾经有一份····”,“多渴望能够 找到一条时光隧道,重回到简单,容易觉得美好”,“我靠,我被Boss打死了还好我有存档”····
哈哈哈,如果时光能倒流那该能圆了我们多少遗憾。如果能重来我决不会在你最重要的那段时间离开,回头也已经于事无补了
茬从程序设计中,有一个“美名昭著”的“重来”对,就是栈
不过栈嘛,好用是固然的但它和我们今天要讲的“备忘录模式”并不楿冲,反而还是相辅相成的呢。
我也曾写过一些需要保存临时数据的功能但是写那些功能的时候是真的烦躁,因为我需要创建很多的對象然后将数据一个一个塞进去,取出来的时候又要将数据一个一个进行输出这让我感觉很不爽。不仅仅是工作量大代码重复度又高,关键是有些数据它明明应该是私有变量,就这样变成了公有变量这让我很相当不满意,毕竟有谁会愿意把自己的美好回忆公开呢
这时候我们就需要使用一些技巧,在不破坏封装性的前提下将内部数据取出,存放后期恢复。
这里我们需要学习一下”备忘录模式“的整体思路:
Originator(发起人):负责创建一个备忘录Memento用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态Originator可以根据需要决定Memento的存储内容。
Memento(备忘录):负责存储Originator的内部状态并可防止Originator以外的对象访问备忘录。备忘录有两个接口Carataker只能看到备忘录的窄接口。
Caretaker(管理者):负責保存好备忘录不能对备忘录内容进行操作或检查。