今天,我们来分享行为型模式的另外一个成员:备忘录模式。
备忘录模式是一种行为型模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。
在平时,我们可能需要在某些时候对状态进行保存,然后可以恢复到之前的状态。
比如:下棋的时候可能会出现悔棋,恢复到上一步或者更上一步的状态。再比如,文本编辑器,会有撤销的场景。再比如,玩通关游戏,关卡可能分很多小关,打一个小Boss后需要打一个大Boss,我们需要在某些阶段对游戏快照进行保存,这样可能恢复到之前的状态,继续玩耍。
这种将对象状态外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态,这就是本文今天要说的备忘录模式,又叫快照模式或者Token模式。
意图
在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
结构
备忘录模式的基本结构如下:

这里涉及到的参与者有如下几种:
Memento(备忘录)
备忘录存储原发器对象的内部状态。原发器根据需要决备忘录存储原发器的哪些内部状态。
Originator(原发器)
Caretaker(负责人)
接下来,我们就模拟一个游戏存档的场景来给出一个备忘录模式的示例。
Game.java(原发器)

GameProgressMemento.java(备忘录)

GameProgressCaretaker.java(负责人)

Client.java(客户端)


输出结果

至此一个简单的游戏状态保存和状态恢复的示例就完成了。
优缺点
优点:
缺点:
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。