首页 > 解决方案 > 纪念品设计模式 - 真实世界的例子

问题描述

有人可以给我一些 Memento 设计模式的真实示例吗?我听说 Cart 可以被认为是 Memento 设计模式之一。这种例子是首选。提前致谢。:)

标签: design-patternsmemento

解决方案


撤消/重做功能

根据重构大师

问题
假设您正在创建一个文本编辑器应用程序。除了简单的文本编辑之外,您的编辑器还可以格式化文本、插入内嵌图像等。

在某个时候,您决定让用户撤消对文本执行的任何操作。多年来,此功能变得如此普遍,以至于如今人们希望每个应用程序都拥有它。对于实施,您选择采用直接方法。在执行任何操作之前,应用程序会记录所有对象的状态并将其保存在一些存储中。稍后,当用户决定恢复操作时,应用程序会从历史记录中获取最新的快照并使用它来恢复所有对象的状态。

适用性
当您想要生成对象状态的快照以便能够恢复对象的先前状态时,请使用 Memento 模式。

Memento 模式允许您制作对象状态的完整副本,包括私有字段,并将它们与对象分开存储。虽然由于“撤消”用例,大多数人都记得这种模式,但在处理事务时它也是必不可少的(即,如果您需要在错误时回滚操作)。


推荐阅读