本文我们来介绍下java23种设计模式中的备忘录模式。 备忘录模式Memento 使用场景 录入大批人员资料。...公文发送出去后,想撤回来 核心内容 就是保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态 结构 说明 源发起类Originator 负责创建一个备忘录Memento,用以记录当前时刻它的内部状态...,并可使用备忘录恢复内部状态 备忘录类Memento 负责存储Originator对象的内部状态,并可防止Originator以外的其他对象访问Memento 负责人类CareTaker 负责保存好备忘录...{ private EmpMemento memento; //备忘点较多时,将备忘录压栈,将多个备忘录对象,序列化和持久化 实现撤回多步的操作 // private Stack<Memento...public EmpMemento memento(){ return new EmpMemento(this); } //进行数据恢复,恢复成制定备忘录对象的值 public void
备忘录模式 一、 概念 二、 结构 三、 分类 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
用途 备忘录模式 (Memento) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。 备忘录模式是一种行为型模式。...Memento 有两个接口,Caretaker 只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。 Originator 可以看到一个宽接口,允许它访问返回到先前状态所需的所有数据。...Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。...Memento,不能对备忘录的内容进行操作或检查。...o.SetMemento(c.GetMemento()); o.Show(); } } 运行结果 State = ON State = OFF State = ON 推荐 本文属于 JAVA
什么是备忘录模式?备忘录模式是一种行为设计模式,用于捕获对象的内部状态并在不破坏封装的前提下将其保存在外部,从而可以在需要时恢复对象到之前的状态。...备忘录模式通过将对象的状态保存到备忘录对象中,实现了状态的封装和隔离,使得可以在不暴露对象内部细节的情况下对对象状态进行保存和恢复。2....备忘录模式的结构在Java中,备忘录模式包含以下几个关键组件:Originator(发起人):负责创建备忘录对象,并将其状态保存到备忘录对象中,或者从备忘录对象中恢复状态。...备忘录模式的实现步骤在Java中,实现备忘录模式通常包括以下步骤:定义备忘录类(Memento):创建一个备忘录类,用于存储发起人对象的内部状态。...在Java中,备忘录模式被广泛应用于各种场景中,如文本编辑器、游戏系统、数据版本管理等。合理地应用备忘录模式可以使得系统设计更加清晰和易于扩展,从而提高代码的质量和效率。
游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力 下降,从备忘录对象恢复到大战前的状态 基本介绍 备忘录模式(Memento...这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情, 以防忘记了。...而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作 备忘录模式属于行为型模式 originator...: 对象(需要保存状态的对象) Memento : 备忘录对象,负责保存好记录,即Originator内部状态 Caretaker: 守护者对象,负责保存多个备忘录对象,使用集合管理,提高效率...打游戏时的存档。 Windows 里的 ctri + z。 IE 中的后退。 数据库的事务管理 为了节约内存,备忘录模式可以和原型模式配合使用
备忘录模式 备忘录模式,又称快照模式或 Token 模式。 备忘录模式的定义 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。...备忘录角色: 该角色负责存储发起人角色的内部状态,在需要时提供发起人所需要的的内部状态。...Caretaker 备忘录管理员角色: 该角色对备忘录角色进行管理、保存和提供备忘录。 备忘录模式的简单示例 ?...) { this.memento = _memento; } } 备忘录模式使用场景和注意事项 备忘录模式的使用场景 需要保护和恢复数据的相关场景 提供一个可回滚的操作 需要监控副本场景中...数据库连接的事物管理 备忘录模式的注意事项 备忘录创建出来就要在最近的代码中使用,要主动管理他的生命周期,建立就要使用,不使用就要立即删除引用 备忘录的性能,不要在频繁建立备份的场景中使用备忘录模式
下面基于备忘录设计模式来描述该场景流程。 2、场景图解 ?...后续可将该对象恢复到原先保存的状态。备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作。 2、模式图解 ?...3、核心角色 备忘录角色 负责保存对象状态的记录,即Originator内部状态。 发起人角色 创建一个含有当前的内部状态的备忘录对象,用来保存状态。...守护者对象 提供合理的方式,负责保存多个备忘录对象。...如果类的成员变量过多,会占用比较大的内存资源,为了节约内存,备忘录模式可以和原型模式配合使用。
前言 这次要介绍的是备忘录模式,也是行为模式的一种 。现在人们的智能手机上都会有备忘录这样一个功能,大家也都会用,就是为了记住某件事情,防止以后自己忘记了。那么备忘录模式又是什么样子的呢?...是不是和手机上的备忘录一样呢?下面来介绍一下。 备忘录模式 概念介绍 备忘录模式是指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。...备忘录模式的构成角色如下所示。 原发器类(Originator):创建一个备忘录对象,使用备忘录存储它的内部状态。 负责人类(CareTaker):负责保存好备忘录对象,不能检查或操作备忘录的内容。...2、备忘录实现了对信息的封装,一个备忘录对象是一种原发器对象状态的表示,不会被其他代码所改动。备忘录保存了原发器的状态,采用列表、堆栈等集合来存储备忘录对象可以实现多次撤销操作。...2、防止外界对象破坏一个对象历史状态的封装性,避免将对象历史状态的实现细节暴露给外界对象。 想了解更多的设计模式请查看Java设计模式学习记录-GoF设计模式概述。
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
引入备忘录模式 备忘录模式的实例 备忘录模式的分析 引入备忘录模式 我们在使用文本编辑器的时候,一般如果不小心误操作了,按ctrl+z就可以恢复之前的状态,撤销(undo)操作。...所以,备忘录模式,就引入一个专门表示实例状态的角色,可以在保存和恢复实例的时候有效的防止对象的封装性遭到破坏。...备忘录模式的实例 我们实现一个实例,可以保存实例某个时间点的状态,并且恢复。 ?...备忘录模式分析 备忘录模式的角色: Originator生成者 生成者会在保存自己状态的时候,new一个新的menmeto角色 当需要恢复的时候,只需要把以前的menmeto传给生成者,他就会将自己恢复至...备忘录模式的类图 ? image.png
一、概述 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。...二、适用性 必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。...三、参与者 Memento 备忘录存储原发器对象的内部状态。 Originator 原发器创建一个备忘录,用以记录当前时刻它的内部状态。使用备忘录恢复内部状态. Caretaker 负责保存好备忘录。...不能对备忘录的内容进行操作或检查。 四、类图 ?
作者主页:Designer 小郑 作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN博客专家,阿里云社区专家博主,蓝桥云课讲师。...备忘录模式的工作原理如下,请同学们认真学习。 发起人创建备忘录对象,并将自身的状态保存到备忘录对象中。 发起人可以根据需要从备忘录对象中恢复自身的状态。...管理者负责保存备忘录对象,但不能对备忘录对象进行操作或检查其内容。 备忘录模式的应用场景包括以下 3 种。 需要实现对象的撤销操作。 需要实现对象的历史记录功能。...它可以有效地解决状态管理和历史记录的问题。 二、备忘录模式实例 下面是一个简单的 Java 代码示例,演示了备忘录模式的实现,请同学们复制到本地执行。...答案:备忘录模式和原型模式虽然都涉及对象状态的保存和恢复,但两者的主要区别在于: 备忘录模式关注于对象状态的保存和恢复,它通过备忘录对象来实现。
记住所有API几乎是不可能的,这时候你需要一份备忘录!下面是我收集的最棒的前端备忘录。 Javascript ES2015 特性 ?...sogko/graphql-shorthand-notation-cheat-sheet/master/graphql-shorthand-notation-cheat-sheet.png 遗漏了你喜欢的备忘录...---- 往期精选文章 使用虚拟dom和JavaScript构建完全响应式的UI框架 扩展 Vue 组件 使用Three.js制作酷炫无比的无穷隧道特效 一个治愈JavaScript疲劳的学习计划 全栈工程师技能大全
基于java的雷电游戏基本功能包括:敌方飞机随机飞行、我方飞机手动控制飞行,射击比拼,游戏闯关等。本系统结构如下: (1)雷电游戏状态调整功能: 在游戏启动时,游戏会自动进行初始化的验证。...(2)雷电游戏难度的升级: 当进入游戏后,随着时间越来越长,游戏难度会越来越大。 界面中敌机增多,对飞机造成伤害的子弹增多,游戏难度增加。...最后会遇到一个血条较长的怪兽,攻击其至血条为0时,自动过关跳转到下一关卡。 (3)玩家对飞机的控制功能: 玩家可以对飞机进行操控,通过前后左右键来控制飞机的飞行路线。 (4)游戏界面绘画功能。
备忘录算法 #include #include using namespace std; int helper(vector &m, int n);
MacBook Pro 14(M1芯片,刘海屏,丐版),经过一段时间折腾,终于可以用来写代码和博客了,这里将设置过程记录下来作个备忘,主要有以下内容 开局必备工具 homebrew 终端 开发(JAVA.../Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home 在~/.zshrc文件的尾部新增以下内容 export JAVA_HOME=/Library/Java.../JavaVirtualMachines/zulu-11.jdk/Contents/Home export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=....:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 重启终端(或者source命令让配置生效),验证配置是否生效 ➜...~ java -version openjdk version "11.0.14.1" 2022-02-08 LTS OpenJDK Runtime Environment Zulu11.54+25
一、Spring单例模式与线程安全 Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。...如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。...A的的calendar数据被清空了(实际上A,B的同时被清空了)....的date 这个问题背后隐藏着一个更为重要的问题--无状态:无状态方法的好处之一,就是它在各种环境下,都可以安全的调用。...这也同时提醒我们在开发和设计系统的时候注意下一下三点: 1.自己写公用类的时候,要对多线程调用情况下的后果在注释里进行明确说明 2.对线程环境下,对每一个共享的可变变量都要注意其线程安全性 3.我们的类和方法在做设计的时候
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,代码美化的,这个怎能忘记
一、介绍 简介 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
前 言本文提出了基于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程序,方便高效。
领取专属 10元无门槛券
手把手带您无忧上云