设计模式篇之 备忘录模式 Memento
别名:快照
目的
备忘录是一种行为型设计模式,它让你可以在不暴露实现细节的情况下保存和恢复对象的先前状态。
问题
假设你正在创建一个文本编辑器应用程序。除了简单的文本编辑外,你的编辑器还可以格式化文本、插入内联图像等。
在某个时刻,你决定让用户能够撤销对文本执行的任何操作。多年来,这一功能变得如此常见,以至于如今人们期望每个应用程序都具备它。对于实现方式,你选择了直接的方法。在执行任何操作之前,应用程序会记录所有对象的状态并将其保存在某个存储中。稍后,当用户决定撤销某个操作时,应用程序会从历史记录中获取最新的快照,并使用它来恢复所有对象的状态。

让我们来思考一下这些状态快照。你究竟该如何生成一个呢?你可能需要遍历对象中的所有字段,并将其值复制到存储中。然而,这只有在对象对其内容的访问限制相当宽松的情况下才可行。不幸的是,大多数实际对象不会让别人轻易地窥视它们的内部,而是将所有重要的数据隐藏在私有字段中。
暂时忽略这个问题,假设我们的对象表现得像嬉皮士:倾向于开放的关系,并保持其状态公开。虽然这种方法可以解决眼前的问题,并让