首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java备忘录模式(Memento)

本文我们来介绍下java23种设计模式中的备忘录模式。 备忘录模式Memento 使用场景 录入大批人员资料。...公文发送出去后,想撤回来 核心内容   就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态 结构 说明 源发起类Originator 负责创建一个备忘录Memento,用以记录当前时刻它的内部状态...,并可使用备忘录恢复内部状态 备忘录类Memento 负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问Memento 负责人类CareTaker 负责保存好备忘录...{ private EmpMemento memento; //备忘点较多时,将备忘录压栈,将多个备忘录对象,序列化和持久化 实现撤回多步的操作 // private Stack<Memento...public EmpMemento memento(){ return new EmpMemento(this); } //进行数据恢复,恢复成制定备忘录对象的值 public void

55920

Java设计模式(十九)----备忘录模式

备忘录模式 一、 概念 二、 结构 三、 分类 1.”白箱”备忘录模式的实现 2.“黑箱”备忘录模式的实现 3....在JAVA语言中,实现双重接口的办法就是将备忘录角色类设计成发起人角色类的内部成员类。   ...备忘录模式可以将发起人对象的状态存储到备忘录对象里面,备忘录模式可以将发起人对象恢复到备忘录对象所存储的某一个检查点上。下面给出一个示意性的、有多重检查点的备忘录模式的实现。 ?...源代码 发起人角色源代码 package Memento2; import java.util.ArrayList; import java.util.List; public class Originator...package Memento2; import java.util.ArrayList; import java.util.List; public class Memento { private

72990
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JAVA 设计模式 备忘录模式

    用途 备忘录模式 (Memento) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。 备忘录模式是一种行为型模式。...Memento 有两个接口,Caretaker 只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。 Originator 可以看到一个宽接口,允许它访问返回到先前状态所需的所有数据。...Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。...Memento,不能对备忘录的内容进行操作或检查。...o.SetMemento(c.GetMemento());         o.Show();     } } 运行结果 State = ON State = OFF State = ON 推荐 本文属于 JAVA

    59480

    Java设计模式之备忘录模式

    什么是备忘录模式?备忘录模式是一种行为设计模式,用于捕获对象的内部状态并在不破坏封装的前提下将其保存在外部,从而可以在需要时恢复对象到之前的状态。...备忘录模式通过将对象的状态保存到备忘录对象中,实现了状态的封装和隔离,使得可以在不暴露对象内部细节的情况下对对象状态进行保存和恢复。2....备忘录模式的结构在Java中,备忘录模式包含以下几个关键组件:Originator(发起人):负责创建备忘录对象,并将其状态保存到备忘录对象中,或者从备忘录对象中恢复状态。...备忘录模式的实现步骤在Java中,实现备忘录模式通常包括以下步骤:定义备忘录类(Memento):创建一个备忘录类,用于存储发起人对象的内部状态。...在Java中,备忘录模式被广泛应用于各种场景中,如文本编辑器、游戏系统、数据版本管理等。合理地应用备忘录模式可以使得系统设计更加清晰和易于扩展,从而提高代码的质量和效率。

    34620

    Java设计模式之备忘录模式

    游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力 下降,从备忘录对象恢复到大战前的状态 基本介绍 备忘录模式(Memento...这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情, 以防忘记了。...而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作 备忘录模式属于行为型模式 originator...: 对象(需要保存状态的对象) Memento : 备忘录对象,负责保存好记录,即Originator内部状态 Caretaker: 守护者对象,负责保存多个备忘录对象,使用集合管理,提高效率...打游戏时的存档。 Windows 里的 ctri + z。 IE 中的后退。 数据库的事务管理 为了节约内存,备忘录模式可以和原型模式配合使用

    33110

    Java设计模式学习记录-备忘录模式

    前言 这次要介绍的是备忘录模式,也是行为模式的一种 。现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了。那么备忘录模式又是什么样子的呢?...是不是和手机上的备忘录一样呢?下面来介绍一下。 备忘录模式  概念介绍 备忘录模式是指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。...备忘录模式的构成角色如下所示。 原发器类(Originator):创建一个备忘录对象,使用备忘录存储它的内部状态。 负责人类(CareTaker):负责保存好备忘录对象,不能检查或操作备忘录的内容。...2、备忘录实现了对信息的封装,一个备忘录对象是一种原发器对象状态的表示,不会被其他代码所改动。备忘录保存了原发器的状态,采用列表、堆栈等集合来存储备忘录对象可以实现多次撤销操作。...2、防止外界对象破坏一个对象历史状态的封装性,避免将对象历史状态的实现细节暴露给外界对象。 想了解更多的设计模式请查看Java设计模式学习记录-GoF设计模式概述。

    41530

    图解Java设计模式之备忘录模式

    2)传统的方式是简单的做备份,new出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节 备忘录模式基本介绍 1)备忘录模式(Memento Pattern)在不破坏封装性的前提下...这样以后就可将该对象恢复到原先保存的状态。 2)可以这里理解备忘录模式 :现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记。...而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。 3)备忘录模式属于行为型模式。...; import java.util.List; public class Caretaker { /** * 在list 集合中会有很多的备忘录对象 */ private List<...; import java.util.Map; import javax.activation.MailcapCommandMap; /** * 守护者对象,保存游戏角色的状态 * @author

    76820

    Java 设计模式系列(21) —— 备忘录模式

    备忘录模式 备忘录模式,又称快照模式或 Token 模式。 备忘录模式的定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。...备忘录角色: 该角色负责存储发起人角色的内部状态,在需要时提供发起人所需要的的内部状态。...Caretaker 备忘录管理员角色: 该角色对备忘录角色进行管理、保存和提供备忘录。 备忘录模式的简单示例 ?...) { this.memento = _memento; } } 备忘录模式使用场景和注意事项 备忘录模式的使用场景 需要保护和恢复数据的相关场景 提供一个可回滚的操作 需要监控副本场景中...数据库连接的事物管理 备忘录模式的注意事项 备忘录创建出来就要在最近的代码中使用,要主动管理他的生命周期,建立就要使用,不使用就要立即删除引用 备忘录的性能,不要在频繁建立备份的场景中使用备忘录模式

    36720

    【Java设计模式】027-备忘录模式

    当然是可以的,而且是有必要的。这个功能由“备忘录模式”来实现。...如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源; 4、主要角色 备忘录模式的核心是设计备忘录类以及用于管理备忘录的管理者类 发起人(Originator)角色:记录当前时刻的内部状态信息...,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息; 备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人 管理者...(Caretaker)角色:对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改; 5、代码实现 测试类 package com.zibo.design.twenty_four...在备忘录模式中,通过定义“备忘录”来备份“发起人”的信息,而原型模式的 clone() 方法具有自备份功能,所以,如果让发起人实现 Cloneable 接口就有备份自己的功能,这时可以删除备忘录类。

    10910

    设计模式之备忘录模式(Memento模式)引入备忘录模式备忘录模式的实例备忘录模式分析

    引入备忘录模式 备忘录模式的实例 备忘录模式的分析 引入备忘录模式 我们在使用文本编辑器的时候,一般如果不小心误操作了,按ctrl+z就可以恢复之前的状态,撤销(undo)操作。...所以,备忘录模式,就引入一个专门表示实例状态的角色,可以在保存和恢复实例的时候有效的防止对象的封装性遭到破坏。...备忘录模式的实例 我们实现一个实例,可以保存实例某个时间点的状态,并且恢复。 ?...备忘录模式分析 备忘录模式的角色: Originator生成者 生成者会在保存自己状态的时候,new一个新的menmeto角色 当需要恢复的时候,只需要把以前的menmeto传给生成者,他就会将自己恢复至...备忘录模式的类图 ? image.png

    42420

    浅谈JAVA设计模式之——备忘录模式(Memento)

    一、概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。...二、适用性 必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。...三、参与者 Memento 备忘录存储原发器对象的内部状态。 Originator 原发器创建一个备忘录,用以记录当前时刻它的内部状态。使用备忘录恢复内部状态. Caretaker 负责保存好备忘录。...不能对备忘录的内容进行操作或检查。 四、类图 ?

    45820

    Java二十三种设计模式-备忘录模式(1923)

    备忘录模式:保存与恢复对象状态的策略 基础知识,java设计模式总体来说设计模式分为三大类: (1)创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。...备忘录模式通过这三种角色的协作,提供了一种机制来捕获和恢复对象的状态,使得用户可以在不同时间点对对象进行快照和回滚。在下一部分中,我们将通过Java代码示例来展示备忘录模式的具体实现。...第二部分:备忘录模式的实现 2.1 Java实现示例 备忘录模式(Memento Pattern)是一种软件设计模式,用于在不破坏封装性的前提下捕获并保存一个对象的内部状态,以便之后可以恢复到该状态。...以下是Java语言中实现备忘录模式的一个简单示例: // 发起人角色,负责创建备忘录并使用它来恢复之前的状态 class Originator { private String state;...) Java二十三种设计模式-装饰器模式(7/23) Java二十三种设计模式-代理模式(8/23) Java二十三种设计模式-外观模式(9/23) Java二十三种设计模式-桥接模式(10/23) Java

    9510

    JAVA设计模式22:备忘录模式,用于保存和恢复对象的状态

    作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。...备忘录模式的工作原理如下,请同学们认真学习。 发起人创建备忘录对象,并将自身的状态保存到备忘录对象中。 发起人可以根据需要从备忘录对象中恢复自身的状态。...管理者负责保存备忘录对象,但不能对备忘录对象进行操作或检查其内容。 备忘录模式的应用场景包括以下 3 种。 需要实现对象的撤销操作。 需要实现对象的历史记录功能。...它可以有效地解决状态管理和历史记录的问题。 二、备忘录模式实例 下面是一个简单的 Java 代码示例,演示了备忘录模式的实现,请同学们复制到本地执行。...答案:备忘录模式和原型模式虽然都涉及对象状态的保存和恢复,但两者的主要区别在于: 备忘录模式关注于对象状态的保存和恢复,它通过备忘录对象来实现。

    44230

    Java笔记备忘录——解析Spring单例模式与线程安全

    一、Spring单例模式与线程安全 Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。...如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。...A的的calendar数据被清空了(实际上A,B的同时被清空了)....的date 这个问题背后隐藏着一个更为重要的问题--无状态:无状态方法的好处之一,就是它在各种环境下,都可以安全的调用。...这也同时提醒我们在开发和设计系统的时候注意下一下三点: 1.自己写公用类的时候,要对多线程调用情况下的后果在注释里进行明确说明 2.对线程环境下,对每一个共享的可变变量都要注意其线程安全性 3.我们的类和方法在做设计的时候

    1K20

    自己常用的vscode的插件备忘录

    1、42header、koroFileHeader、psioniq File Header这三个是由于插入文件说明,函数说明的。我在编写c语言的时候经常用到的。记得要修改快捷方式。...这个是显示文件大小的 9、Guides这个是用在代码中添加引导线的,适合找括号等,尤其是在代码比较长的情况下比较方便 10、Chinese (Simplified) Language Pack for...11、Bracket Pair Colorizer 2这个是很好的各种括号类的好亮匹配,总之就是很好了。...类似于函数大纲的,函数列表等等的信息 15、文件夹的主题vscode-icons、Material Icon Theme两个都不错 16、vscode-pdf,查看pdf的。...17、Markdown Preview Enhanced,预览markdown文件的。 18、any-rule正则表达式的 19、astyle,代码美化的,这个怎能忘记

    90240
    领券