备忘录

设计模式:10-备忘录模式 / 解释器模式

你离开我真会死。 提交于 2020-02-20 07:19:24
文章目录 20. 备忘录模式(Memento Pattern) 20.1 需求的引入 20.2 基本介绍 20.3 应用实例 20.4 备忘录模式的注意事项和细节 21. 解释器模式(Interpreter Pattern) 21.1 需求的引入 21.2 基本介绍 21.3 应用实例 21.4 解释器模式在 Spring 框架应用的源码剖析 21.5 解释器模式的注意事项和细节 20. 备忘录模式(Memento Pattern) 20.1 需求的引入 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御 力下降,从备忘录对象恢复到大战前的状态 20.2 基本介绍 基本介绍 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这 个状态。这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意 见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某 种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行恢复操作 备忘录模式属于行为型模式 备忘录模式的原理类图 对原理类图的说明-即(备忘录模式的角色及职责)

设计模式总结——备忘录模式

北城余情 提交于 2020-02-12 03:58:16
用于保存状态,以便恢复状态。 举个栗子,游戏中的存档: 1.创建备忘录类 RoleStateMemento 。 1.1保存角色状态 attack,defense,hp; 2.创建备忘录管理类 RoleStateManager , 维护一个 RoleStateMemento 对象。 3.创建游戏角色类 Role 。 3.1保存角色状态 attack,defense,hp; 3.2保存状态 SaveState(),该方法返回 new RoleStateMemento(this.attack, this.defense, this.hp); 3.3恢复状态 RecoveryState(),从 RoleStateManager 获取 RoleStateMemento 对象,覆盖自身的变量值; 来源: CSDN 作者: Beetxm_ 链接: https://blog.csdn.net/qq_19533777/article/details/104256770

随笔分类整理

≯℡__Kan透↙ 提交于 2020-02-04 14:11:20
整理一下博客的随笔,以便查询和浏览。 计算机知识 Linux备忘录 linux备忘录-基本命令 linux备忘录-文件系统管理 linux备忘录-vi和vim linux备忘录-档案与文件系统的压缩与打包 linux备忘录-shell脚本 linux备忘录-正则表达式与文件格式化处理 linux备忘录-bash linux备忘录-账号管理与ACL权限设定 linux备忘录-磁盘配额与进阶文件系统管理 linux备忘录-例行性工作排程 (crontab) linux备忘录-程序管理与SELinux linux备忘录-系统服务daemon linux备忘录-日志档案 Windows系统 PE文件结构 计算机网络 [网络协议概览] [链路层 Data Link] [网络层 Network] [传输层 Transport] [应用层 Application] 计算机安全 openssl 使用方法 RSA [AES对称加密算法] 其他呢 RegularExpression知识点 编程 C & C++ C/C++知识点 算法-C++篇 数据结构-C++篇 [数据结构-表 (List)] [数据结构-栈 (Stack)] [数据结构-队列 (Queue)] [数据结构-简单的树 (Tree)] [数据结构-平衡二叉查找树 (AVL Tree)] [数据结构-散列 (hashing)] [数据结构

安卓、苹果手机备忘录同步

て烟熏妆下的殇ゞ 提交于 2020-02-04 02:23:02
安卓、苹果的备忘录互不相通,安卓的备忘录叫记事本。你有两只手机,怎么样把安卓和苹果手机的备忘录同步起来了?现在有了一个安卓的APP,用安卓上的豌豆荚去收索“备忘录”,排在第一的那个,下载量9.7万,900多K的就是。注意:有很多叫备忘录的app,不要弄错,app图表上有个notes的就是。安装后,用icloud邮箱建一个账号,就可以同步苹果和安卓的备忘录了。(原创) 来源: https://www.cnblogs.com/hjzou/p/4820385.html

备忘录模式 C++

心已入冬 提交于 2020-01-30 12:50:20
备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 介绍 意图: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 主要解决: 所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。 何时使用: 很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态,使得他有"后悔药"可吃。 如何解决: 通过一个备忘录类专门存储对象状态。 关键代码: 客户不与备忘录类耦合,与备忘录管理类耦合。 应用实例: 1、后悔药。 2、打游戏时的存档。 3、Windows 里的 ctri + z。 4、IE 中的后退。 4、数据库的事务管理。 优点: 1、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 2、实现了信息的封装,使得用户不需要关心状态的保存细节。 缺点: 消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。 使用场景: 1、需要保存/恢复数据的相关状态场景。 2、提供一个可回滚的操作。 注意事项: 1、为了符合迪米特原则,还要增加一个管理备忘录的类。 2、为了节约内存

备忘录模式

泄露秘密 提交于 2020-01-29 23:45:16
模式介绍 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。 模式优点 1、在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 2、给用户提供了一种可以恢复状态的机制,可以使用户能够比较方便地回到某个历史的状态。 模式缺点 1、消耗资源。如果类的成员变量过多,势必会占用比较大的资源,而且每一次保存都会消耗一定的内存。 使用场景 1、需要保存/恢复数据的相关状态场景。 2、提供一个可回滚的操作。 系统建模 1、备忘录模式使用三个类Memento、Originator和CareTaker。 2、Originator创建并在Memento对象中存储状态。 3、Caretaker对象负责从Memento中恢复对象的状态。 系统实现 /** * 记录对象状态的类 */ public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState(){ return state; } } /** * 需要保存状态的类 */ public class Originator { private String state; public void

c++ 行为型模式_备忘录(Memento)

北战南征 提交于 2020-01-28 17:41:29
1) 意图 在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样可以将对象恢复到原先保存的状态 2) 结构 其中 Memento ( 备忘录 ) 存储 Originator 内部状态 Originator( 原发器 ) 创建一个 Memento ,用于记录当前时刻它的内部状态 Caretaker ( 管理者 ) 负责保存好备忘录,但不能操作或检查备忘录的内容 3) 适用性 必须保存一个对象在某一个时刻的状态,以便需要时恢复此前状态 如果提供一个接口让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性 4) 举例 1 #include <iostream> 2 typedef std::string STATE; 3 class Originator; 4 class Memento 5 { 6 public: 7 virtual ~Memento() {} 8 private: 9 friend Originator; 10 Memento(STATE& state):m_state(state){} 11 void setState(STATE& state) 12 { 13 m_state = state; 14 } 15 STATE getState() 16 { 17 return m_state; 18 } 19 STATE m

设计模式之备忘录模式

自古美人都是妖i 提交于 2020-01-22 18:35:23
   备忘录模式 ,属于行为型设计模式,用于保存一个对象的某个状态,以便在适当的时候恢复对象。    定义 :在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将这个对象恢复到原先保存的状态。    问题描述 :用户在误操作后想取消刚才的操作并且返回到某个历史状态。    解决方案 :在用户操作之前保存一下历史状态,当用户操作后,如果想撤销操作,那就可以取出事先保存的历史状态来覆盖当前状态。    结构图 :    举个栗子 :将一个数据添加和撤销添加操作的故事。。。   我们实现一个添加数据和撤销上一步添加操作使得数据还原的功能。具体实现方式如下:   1. 新建一个原发器类Originator,包含一些用于存储成员数据的属性。代码如下:   2. 新建一个备忘录类Memento,提供了与原发器相对应的属性,用于存储原发器的状态。代码如下:   3. 新建一个管理者类Caretaker,用于保存备忘录对象。代码如下:   4. 实现添加数据和撤销上一步添加操作使得数据还原的功能。代码如下:   5. 运行后的效果,如图所示:      以上我们就实现了简单的撤销操作功能,但是只能撤销一次,因为在管理者类中只定义了一个备忘录对象来保存状态,后面保存的状态将会把上次保存的状态覆盖,这样就只能撤销一次了。那么如何实现多次撤销操作呢

【设计模式】——备忘录模式

只愿长相守 提交于 2020-01-22 18:34:41
备忘录(Memento) :在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。   Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的那些状态。Memento(备忘录):负责存储Originator对象的内部状态,并可防止Originator以外的对象访问备忘录Memento。备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。Originator能够看到一个宽接口,允许它访问返回到先前状态所需的所有数据。Caretaker(管理者):负责保存好备忘录Memento,不能对备忘录的内容进行操作或检查。这当中要保存的细节给封装在了Memento中,那一天要更改保存的细节也不用影响客户端了。    代码基本模板 #include <iostream> using namespace std; //备忘录(Memento)类 class Memento { private: string m_state; public: Memento(string state):m_state(state) { } string getState()

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

空扰寡人 提交于 2020-01-22 18:34:21
  备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。   以下给出备忘录模式的UML图:        Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的哪些内部状态。   Memento(备忘录):负责存储Originnator对象的内部状态,并可防止Originator以外的其他对象访问备忘录Memento,备忘录有两个接口,Caretaker只能看到备忘录的窄接口,它只能将备忘录传递给其他对象。   Caretaker(管理者):负责保存好备忘录Memento,不能对备忘录的内容进行操作或检查。   以下给出备忘录模式的基本代码结构: namespace ConsoleApplication1 { class Originator { private string state; public string State //需要保存的属性,可能有多个 { get { return state; } set { state = value; } } public Memento CreateMemento() //创建备忘录