行为型模式之备忘录模式(Memento)
来源:互联网 发布:mac常用应用 编辑:程序博客网 时间:2024/05/19 00:50
一、模式介绍
备忘录模式可以对一个对象的内部状态进行备份,以在一个合适的时机恢复到这个状态,例如编辑器软件可以恢复到上次修改的操作,备忘录模式的关键在于备份对象不应该破坏原对象的封装性,对于其内部状态,应该只能由自己来访问。
二、原理图
三、示例代码
import java.util.ArrayDeque;import java.util.Deque;class Memento { String state1; String state2; public String getState1() { return state1; } public void setState1(String state1) { this.state1 = state1; } public String getState2() { return state2; } public void setState2(String state2) { this.state2 = state2; }}class Subject { private String data1; private String data2; public void setData1(String data1) { this.data1 = data1; } public void setData2(String data2) { this.data2 = data2; } /** * 创建的备份对象,不应该被其它对象识别 */ public Memento createMemento() { Memento memento = new Memento(); memento.setState1(data1); memento.setState2(data2); return memento; } /** * 应该只能自己恢复数据,外部对象没有能力 */ public void recoverFromMemonto(Memento memento) { data1 = memento.getState1(); data2 = memento.getState2(); } @Override public String toString() { return "数据1:" + data1 + "\t数据2:" + data2; }}// 外部 备忘录 保存器,不应该能够查看class BackupManager {// Stack stack = new Stack(); Deque<Memento> stack = new ArrayDeque<Memento>(); void saveMemento(Memento memento) { stack.push(memento); } Memento getMemento() { return stack.pop(); }}public class T { public static void main(String[] args) { BackupManager backupManager = new BackupManager();// 外部对象,保存备忘录,不应该能够查看 Subject subject = new Subject(); subject.setData1("data1"); subject.setData2("data2"); System.out.println("原数据:" + subject.toString()); backupManager.saveMemento(subject.createMemento()); subject.setData1("newData1"); subject.setData2("newData2"); System.out.println("新数据:" + subject.toString()); subject.recoverFromMemonto(backupManager.getMemento()); System.out.println("恢复:" + subject.toString()); }}
输出:
原数据:数据1:data1数据2:data2新数据:数据1:newData1数据2:newData2恢复:数据1:data1数据2:data2
- 行为型模式-----备忘录模式(Memento)
- 行为型模式之备忘录模式(Memento)
- 行为型模式之备忘录模式(Memento)
- 行为型模式之备忘录MEMENTO
- 十八、备忘录模式Memento(行为型)
- 备忘录模式Memento(对象行为型)
- 行为型模式-备忘录memento
- 行为模式:Memento(备忘录)
- 【设计模式】行为模式之备忘录Memento
- 设计模式笔记--行为型模式之六--Memento 备忘录
- 设计模式(行为型)之备忘录模式(Memento Pattern)
- [设计模式-行为型]备忘录模式(Memento)
- 行为型模式-Memento ( 备忘录模式 )
- Memento 备忘录模式 ----对象行为型模式
- 设计模式学习之备忘录模式(Memento,行为型模式)(19)
- 设计模式学习之备忘录模式(Memento,行为型模式)(19)
- 设计模式学习之备忘录模式(Memento,行为型模式)(19)
- 设计模式(4)-行为型-备忘录模式(Memento)
- python中随机数的查找
- sql中索引不会被用到的几种情况
- android 下载sdk后,需要执行下SDK Manager,然后才能找到解压后的sdk
- Web 服务器、Servlet容器以及Tomcat服务器
- Qt制作Skin(皮肤)总结
- 行为型模式之备忘录模式(Memento)
- HTTP和CGI普及
- android 抗锯齿效果【转】
- libev-简单使用解析
- 运行VS2008编译出来的exe程序,提示“ 由于应用程序配置不正确,未能启动此应用程序”
- 利用SecureCRT上传、下载文件(使用sz与rz命令)
- lua 基础2
- 菜鸟的字体设计之路——基础方法篇
- ubuntu下使用vi是方向键变乱码 退格键不能使用的解决方法