当前位置:网站首页>备忘录模式
备忘录模式
2022-08-04 19:12:00 【wfsm】
备忘录模式(Memento):快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态
备忘录模式角色:
- 发起人(Originator) : 记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,他可以访问备忘录里的所有信息
- 备忘录(Memento): 负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人
- 管理者(Caretaker): 对备忘录进行管理,提供保存与获取备忘录的功能,但其不能对备忘录的内容进行访问与修改
代码:
备忘录
@Data
@AllArgsConstructor
public class Memento {
private String state;
}
管理者
@Data
public class Caretaker {
private Memento memento;
}
发起人
@Data
public class Originator {
private String state;
// 保存状态
public Memento createMemento(){
return new Memento(state);
}
// 恢复
public void restoreMemento(Memento memento){
this.state = memento.getState();
}
}
测试:
public static void main(String[] args) {
Originator originator = new Originator();
Caretaker caretaker = new Caretaker();
//
originator.setState("50");
System.out.println("初始状态: "+originator.getState());
// 存 当前状态
caretaker.setMemento(originator.createMemento());
originator.setState("51");
System.out.println("新的状态: "+originator.getState());
// 恢复状态
originator.restoreMemento(caretaker.getMemento());
System.out.println("恢复状态:"+originator.getState());
}
引用:https://www.jianshu.com/p/f0236f5b60f1
边栏推荐
猜你喜欢
随机推荐
使用.NET简单实现一个Redis的高性能克隆版(二)
JS 问号?妙用
EuROC dataset format and related codes
PHP代码审计7—文件上传漏洞
CIFAR发布《AI伦理的文化:研讨会报告》【附下载】
Yuanguo chain game system development
存储资源盘活系统助力新基建
VQ Realization of Wavelet Extraction Features
【RTOS训练营】关于上课和答疑
八一建军节 | 致敬中国人民解放军
MySQL安装教程(详细)
元国度链游系统开发
Dragoma(DMA)元宇宙系统开发
译文推荐|Apache Pulsar 隔离系列(四):单集群隔离策略
How to add custom syntax to MySQL?
SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
win10 uwp win2d 使用 Path 绘制界面
MogDB学习笔记-环境准备及单实例安装
视频目标检测
[Distributed Advanced] Let's fill in those pits in Redis distributed locks.