“备忘录模式”就这么简单

article/2025/11/10 18:59:54

备忘录模式的官方定义:

在不破坏封装性的前提下,获取一个对象的内部状态,并在该对象之外保存这些状态。这样以后就可以通过该对象恢复到原先保存的状态。


大白话说:

一个对象中一般都封装了很多属性,这些属性的值会随着程序的运行而变化。当我们需要保存某一时刻对象的某些值的时候,我们就再创建一个对象,将当前对象中的一些属性保存到新的对象中,当我们需要恢复的时候再从新的对象中取出属性值即可。这种想法就是备忘录模式。


备忘录模式的类图:


1.需要备份的类是Orginator,备份的数据保存在Mementor中,由CareTaker来管理Mementor。

2.Orginator中必须含有两个函数,一个是createMementor(),用来创建Mementor对象,并将需要备份的数据保存到该对象中;另外一个是setMementor(Mementor),用来恢复数据,将传入的Mementor对象中的数据取出来,赋给当前对象中的属性。


不用备忘录模式进行备份对象信息:

调用者使用别人提供给我们的Orginator对象,用着用着我们突然想要保存Orginator对象中的数据了,此时我们一般会再创建个Orginator对象,把需要保存的数据一个个地复制到新的Orginator对象中去。然后当我们需要还原的时候,再将新Orginator对象中的数据一个个拷到旧的Orginator对象中去。

这种方式有个巨大的缺陷:

我们在保存属性的时候需要记住保存了哪些属性,好在还原的时候将这些属性再复制给原来的对象。如果需要保存的属性发生了变化,那么我们还需要修改自己的代码。

使用了备忘录模式的好处:

使用了备忘录模式之后,对方在提供给我们Orginator类的基础上还给我们提供了Mementor、CareTaker类。我们客户端只需要在需要备份的地方调用createMementor()函数,需要还原的地方调用setMementor。如果需要备份的属性发生了变化,那也只是第三方类库Orginator、Mementor进行了修改,对于我们客户端来说,代码不需要任何修改。


备忘录模式与克隆的区别?

有的人说,备忘录模式就是用来保存对象中一些属性,那么当我们需要备份对象中属性的时候完全可以克隆这个对象嘛,何必采用构造这么复杂的备忘录模式呢?

原因有以下几点:

1.进行一次克隆会将对象的全部属性都复制到一个新的对象中去,而当我们仅需要备份对象中一部分属性的时候就只能使用备忘录模式。

PS:在只备份一部分属性的时候也可以新建一个对象,然后把需要备份的属性一一复制给新对象中;然后当还原的时候再一一复制到原本的对象中去。但这样做太烂了!因为客户端在备份的时候必须要记住哪些属性备份了,好在还原的时候还原这些属性。而且当需要备份的属性发生变化的时候,必须修改客户端代码,这很不科学。

2.使用备忘录模式之后,当需要备份的属性发生变化后,只需修改Orginator类和Mementor类,无需修改客户端代码。

3.使用备忘录模式之后,备份数据虽然交给了其他对象保存,但对象的备份操作和还原操作都是通过对象本身的函数实现的,因此体现了封装的思想。


什么时候使用备忘录模式?

当一个对象需要记录其历史属性,并且需要记录的属性是所有属性的一部分时,可以使用备忘录模式记录属性。



http://chatgpt.dhexx.cn/article/lelpddto.shtml

相关文章

(18)备忘录模式

 (18)备忘录模式 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态 类型:行为类 类图: 我们…

Java设计模式-备忘录模式、备忘录模式应用场景是什么、又怎么使用

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库Java设计模式克隆下载学习使用! 6.11 备忘录模式 6.11.1 定义 又称快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存此状态&am…

C++设计模式(17)——备忘录模式

亦称: 快照、Snapshot、Memento 意图 备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 问题 假如你正在开发一款文字编辑器应用程序。 除了简单的文字编辑功能外, 编辑器中还要有设置文本格…

Java备忘录模式(Memento)

本文我们来介绍下java23种设计模式中的备忘录模式。 备忘录模式Memento 使用场景 录入大批人员资料。正在录入当前人资料时,发现上一个人录错了, 此时需要恢复上一个人的资料,再进行修改。Word文档编辑时,忽然电脑死机或断电&a…

Java设计模式之备忘录模式

Java设计模式之备忘录模式 1. 备忘录模式概述1.1 备忘录模式简介1.2 备忘录模式类图1.3 备忘录模式的注意事项和细节 2. 备忘录模式实现2.1 项目说明2.2 项目实现 1. 备忘录模式概述 1.1 备忘录模式简介 1.备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的…

【设计模式】备忘录模式

设计模式总结链接 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。   备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住&#xff…

23种设计模式——备忘录模式

目录 备忘录模式(Memento) UML图 示例代码 适用场景 优缺点 备忘录模式和原型模式 例子——游戏进度存档 例子——象棋中的悔棋 备忘录模式(Memento) 本质:保存和恢复内部状态 备忘录模式:在不破坏…

23种设计模式之---备忘录模式

前言 网上搜索备忘录设计模式,基本上均是在一个GoF,基础上衍生下来的。为了避免重复造轮子,这里会结合网上demo,和自己理解进行总结 定义:备忘录(Memento)模式又称标记(Token&…

备忘录模式介绍

备忘录模式介绍 一、基本介绍二、代码实现三、UML类图四、备忘录模式小结其他设计模式 一、基本介绍 备忘录模式(Memento Pattern)属于行为型模式,是指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外…

设计模式 | 备忘录模式及典型应用

本文的主要内容: 介绍备忘录模式示例备忘录模式总结 备忘录模式 备忘录模式经常可以遇到,譬如下面这些场景: 浏览器回退:浏览器一般有浏览记录,当我们在一个网页上点击几次链接之后,可在左上角点击左箭头…

设计模式之备忘录模式

一、备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 原发器(Originator)角色:原发器根据需要决定将自己的哪些内部状态保存到备忘录中,并可以使…

备忘录模式(Java)

备忘录模式(Java) 下面是关于我所写的所有设计模式代码(还是建议自己手打或者想一个别的例子练习一次) (https://github.com/lihang212010/DesignPatterns-/tree/master/designpatterns/src) 先来张百度的UML 下面是我例子的U…

撤销功能的实现——备忘录模式(二)

21.2 备忘录模式概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作&#xff0…

18-备忘录模式

文章目录 游戏角色状态恢复问题备忘录模式基本介绍备忘录模式解决游戏角色状态回复问题备忘录模式的注意事项和细节 游戏角色状态恢复问题 游戏鱼色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss …

详解设计模式:备忘录模式

详解设计模式:备忘录模式 备忘录模式(Memento Pattern)也被称为快照模式(Snapshot Pattern)、Token 模式(Token Pattern),是在 GoF 23 种设计模式中定义了的行为型模式。 备忘录模式…

JAVA设计模式--备忘录模式

目录 一、什么是备忘录模式 二、备忘录模式的结构 三、备忘录模式的适用性 四、备忘录模式的实现 五、备忘录模式的优缺点 六、总结 一、什么是备忘录模式 备忘录(Memento)模式又叫作快照(Snapshot)模式或Token模式,是一种对象的行为模式。在备忘录模式里&am…

设计模式之备忘录模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、备忘录模式是什么? 备忘录模式是一种行为型的软件设计模式,在不破坏封装的前提下,获取一个…

什么是备忘录模式?

一、定义 备忘录模式又称快照模式,或者令牌模式。是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态,属于行为型模式。 二、通用写法及其uml 发起人角色&a…

行为型模式——备忘录模式(Memento Pattern)

文章目录 备忘录模式(Memento Pattern)什么是备忘录模式?UML角色应用使用模板 为什么要使用备忘录模式?优点:缺点: 怎样使用备忘录模式?在JDK中的使用 备忘录模式(Memento Pattern&a…

备忘录模式

一、备忘录模式 1、定义 备忘录模式(Memento Pattern)又称作快照模式(Snapshot Pattern),指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复…