首页
学习
活动
专区
工具
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

55720

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

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

    JAVA 设计模式 备忘录模式

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

    58580

    Java设计模式之备忘录模式

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

    33320

    Java设计模式之备忘录模式

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

    32810

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

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

    36420

    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

    76020

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

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

    42120

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

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

    45420

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

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

    42430

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

    一、Spring单例模式与线程安全 Spring框架里bean,或者说组件,获取实例时候都是默认单例模式,这是在多线程开发时候要尤其注意地方。 单例模式意思就是只有一个实例。...如果你代码所在进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行结果是一样,而且其他变量值也和预期是一样,就是线程安全。...Acalendar数据被清空了(实际上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,代码美化,这个怎能忘记

    88940

    Shiro——基于java安全框架

    一、介绍 简介 Apache Shiro是一个强大易用Java安全框架,提供了认证、授权、加密和 会话管理等功能。 对于任何一个应用程序,Shiro都可以提供全面的安全管理服务。...方法设置常量值 3、对象名.属性名=$对象引用 相当于调用setter方法设置对象引用 详情见: https://jinnianshilongnian.iteye.com/blog/2020820 三、基于...subject.login(token); //7.判断是否认证通过 System.out.println(subject.isAuthenticated()); //认证通过后进行授权:代码触发 //基于角色授权...//boolean hasRole = subject.hasRole("普通员工"); //System.out.println(hasRole); //基于权限授权 boolean...com.bjsxt.rbac.pojo.Users; public interface IUserService { //根据用户名查询用户信息 Users selectByUsername(String username); } ```java

    1.6K20

    java基于ssh旅游系统

    前 言本文提出了基于SSH西安旅游网站设计和实现方法,具体介绍了该系统从构思到设计再到开发一系列步骤。第一章主要介绍了在基于SSH西安旅游网站分析和研究背景、意义及发展前景方向。...本系统将要依循面向对象软件开发过程,设计出客户端基于WEB浏览器,完成页面设计、服务器端请求处理以及对数据库同步更新。该系统可以实现游客分类查询西安风景、路线信息、路线预定,。...JDK(Java Development Kit)称为Java开发包或Java开发工具,JDK是整个Java核心,包括了Java运行环境(Java Runtime Envirnment),一些Java...工具和Java核心类库(Java API)。...Eclipse 是一个开放源代码基于Java可扩展开发平台,它附带了一个标准插件集,包括Java开发工具(Java Development Kit,JDK)。用来编写Java程序,方便高效。

    56920
    领券