行为型模式-Memento ( 备忘录模式 )
来源:互联网 发布:淘宝创想电玩 编辑:程序博客网 时间:2024/05/17 18:40
摘自《Java设计模式(疯狂JAVA联盟版)》
备忘录模式
概述
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
适用性
1.必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态。 2.如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。
参与者
1.Memento 备忘录存储原发器对象的内部状态。 2.Originator 原发器创建一个备忘录,用以记录当前时刻它的内部状态。 使用备忘录恢复内部状态. 3.Caretaker 负责保存好备忘录。 不能对备忘录的内容进行操作或检查。
类图
例子
Memento
public 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; }}
Originator
public class Originator { private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento() { return new Memento(state); } public void setMemento(Memento memento) { state = memento.getState(); } public void showState(){ System.out.println(state); }}
Caretaker
public class Caretaker { private Memento memento; public Memento getMemento(){ return this.memento; } public void setMemento(Memento memento){ this.memento = memento; }}
Test
public class Test { public static void main(String[] args) { Originator org = new Originator(); org.setState("开会中"); Caretaker ctk = new Caretaker(); ctk.setMemento(org.createMemento());//将数据封装在Caretaker org.setState("睡觉中"); org.showState();//显示 org.setMemento(ctk.getMemento());//将数据重新导入 org.showState(); }}
result
睡觉中开会中
0 0
- 行为型模式-备忘录memento
- 行为型模式-----备忘录模式(Memento)
- [设计模式-行为型]备忘录模式(Memento)
- 行为型模式-Memento ( 备忘录模式 )
- Memento 备忘录模式 ----对象行为型模式
- 十八、备忘录模式Memento(行为型)
- 行为型模式之备忘录MEMENTO
- 备忘录模式Memento(对象行为型)
- 行为模式:Memento(备忘录)
- 设计模式笔记--行为型模式之六--Memento 备忘录
- 设计模式(18)-行为型-备忘录模式(Memento)
- 行为型模式之备忘录模式(Memento)
- 设计模式--备忘录模式Memento(行为型)
- 设计模式(行为型)之备忘录模式(Memento Pattern)
- JAVA设计模式(19) —<行为型>备忘录模式(Memento)
- 七、备忘录模式Memento(行为型模式)
- 设计模式(4)-行为型-备忘录模式(Memento)
- 设计模式-行为型- 备忘录模式(Memento)
- 行为型模式-Mediator ( 中介者模式 )
- 设计模式C++实现一:简单工厂模式
- 第九周项目一复数类中的运算符重载(续)(1)
- Android WebView的Js对象注入漏洞解决方案
- iOS沙盒
- 行为型模式-Memento ( 备忘录模式 )
- C# Ajax 在前台调用报出未定义错误
- 禅道一键安装
- 判断是否下载指定客户端(遍历硬盘上的全部文件文件夹)
- 行为型模式-Observer ( 观察者模式 )
- JQuery基础选择器
- 有梦想的人,始终在路上!(记阿里实习生霸面经历,拿到offer)
- spring学习二:根据spring原理自己写个spring
- metasploit 首次渗透测试