设计模式之备忘录模式
来源:互联网 发布:单片机电源模块电路图 编辑:程序博客网 时间:2024/06/06 19:05
定义:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态
备忘录模式的结构
发起人:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。
备忘录:负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。
管理角色:对备忘录进行管理,保存和提供备忘录。
通用代码:
发起者代码:
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 Client { 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()); } }
上面代码的逻辑很简单,就是通过一个对象保存一个需要备份的状态信息,然后再另一个类中通过这个对象在需要的时候得到这个备份信息。
即使在实际应用中也是这个框架来使用的,只不过逻辑可能要更加的复杂一些,例如可能是多个状态的备份这个时候可以使用bean的方式来备份。
0 0
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式之备忘录
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式之备忘录模式
- 设计模式 之 备忘录模式
- 设计模式之备忘录模式
- swift基本语法(总结提炼版)之012 swift 之闭包
- 摘抄-程序员如何写出杀手级的简历
- 将web应用部署到Linux下面的tomcat服务器
- C# winform程序防止前台卡死
- 关于Adroid Studio在64位系统上不能打开的问题
- 设计模式之备忘录模式
- 0-1背包问题
- leetcode——1——Two Sum
- 单例模式
- Android-银联支付开发
- css盒子模型+小三角
- Fedoera 20 安装 samba 服务器.md
- GCC的内嵌汇编语法 AT&T汇编语言语法
- 问题 I: 函数---判断某年某月某日是这一年中的第几天