备忘录模式
来源:互联网 发布:宝宝网络语言什么意思 编辑:程序博客网 时间:2024/06/02 08:26
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
管理角色:对备忘录进行管理,保存和提供备忘录。
class Originator { //记录当前时刻的信息 private String state = ""; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento(){ return new Memento(this.state); } public void restoreMemento(Memento memento){ this.setState(memento.getState()); }}//记录备忘信息class Memento { private String state = ""; public Memento(String state){ this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; }}class Caretaker { private Memento memento; public Memento getMemento(){ return memento; } public void setMemento(Memento memento){ this.memento = memento; }}public class Test { public static void main(String[] args){ Originator originator = new Originator(); originator.setState("状态1"); System.out.println("初始状态:"+originator.getState()); Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.createMemento()); originator.setState("状态2"); System.out.println("改变后状态:"+originator.getState()); originator.restoreMemento(caretaker.getMemento()); System.out.println("恢复后状态:"+originator.getState()); }}
应用
一般使用备忘录模式的变形。
应用场景:
需要保持、恢复数据的相关状态
提供回滚操作
注意事项
备忘录的生命周期
备忘录的性能。对于频繁创建备忘录的场景,控制不了对象的数量,建立对象对资源的消耗,需要仔细考虑。
扩展
对备忘类使用原型模式
多状态的备忘录
多个备份的备忘录
阅读全文
0 0
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- 备忘录模式
- java 深入理解自定义类 、构造器 、显式参数与隐式参数
- mybatis-mybatis二级缓存的配置
- CodeForces 833B 详细题解(貌似是四边形优化)
- QGraphicsView框架容易忽视的坐标问题-“画布”QgraphicsScene到底放在了哪儿?
- 多校赛01
- 备忘录模式
- PhpStorm格式化快捷鍵
- KMP匹配算法复习。。
- python学习(三)之list和tuple
- UVALive 7525
- docker容器内通过supervisor来守护进程
- FreeRTOS系统配置
- struts2-值栈/ngol语句/s标签
- C++中重载和排序问题的简单写法