design-patterns - 纪念品设计模式 - 真实世界的例子
问题描述
有人可以给我一些 Memento 设计模式的真实示例吗?我听说 Cart 可以被认为是 Memento 设计模式之一。这种例子是首选。提前致谢。:)
解决方案
撤消/重做功能
根据重构大师,
问题
假设您正在创建一个文本编辑器应用程序。除了简单的文本编辑之外,您的编辑器还可以格式化文本、插入内嵌图像等。在某个时候,您决定让用户撤消对文本执行的任何操作。多年来,此功能变得如此普遍,以至于如今人们希望每个应用程序都拥有它。对于实施,您选择采用直接方法。在执行任何操作之前,应用程序会记录所有对象的状态并将其保存在一些存储中。稍后,当用户决定恢复操作时,应用程序会从历史记录中获取最新的快照并使用它来恢复所有对象的状态。
适用性
当您想要生成对象状态的快照以便能够恢复对象的先前状态时,请使用 Memento 模式。Memento 模式允许您制作对象状态的完整副本,包括私有字段,并将它们与对象分开存储。虽然由于“撤消”用例,大多数人都记得这种模式,但在处理事务时它也是必不可少的(即,如果您需要在错误时回滚操作)。
推荐阅读
- css - 具有响应大小和固定 px 边距的图像对齐
- kubernetes - 哪个k8s数据结构来表示基本对象?
- sdk - 在 Hexagon HVX DSP 上运行 nnlib 测试应用程序
- maven - 如何使用maven从命令行将参数传递给testng.xml
- apache-spark - 如何将logstash输出链接到火花输入
- python - Tensorflow:当标签是整数索引或类 id 时,如何计算 CNN 模型的准确度
- ios - iOS 11.3 中发生的状态栏背景颜色问题
- c - 错误:数字常量 int sem_init(sem_t *s,0,unsigned int val) 之前的预期声明说明符或“...”;
- java - 为什么 java tcp 服务器接受关闭的套接字?
- actions-on-google - 有没有办法使用实体名称而不是实体 ID 来调用 DialogFlow v2 api?