设计模式(18)------备忘录模式
来源:互联网 发布:男子遭遇网络诈骗 编辑:程序博客网 时间:2024/06/05 08:26
备忘录模式作用:
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
这样以后就可以将对象状态恢复至保存时的状态。
应用场景:
(1)必须保存一个对象在某一时刻的状态,在需要时才能恢复至先前的状态。
(2)如果一个用接口来让其它对象直接得到这些对象状态,将会暴露对象的实现细节并破坏对象的封装性。
参与对象:
(1)Memento
备忘录存储原发器对象的内部状态。
(2)Originator
原发器创建一个备忘录,用于记录当前时刻的内部状态。
使用备忘录恢复内部状态。
(3)Caretaker
负责保存好备忘录,不能对备忘录的内部进行操作或检索。
eg:
Memento
package com.lanhuigu.base.design.behavior.memento;/** * Memento: 备忘录存储原发器对象的内部状态 */public class Memento {private String state;public Memento(String state) {// TODO Auto-generated constructor stubthis.state = state;}public String getState() {return state;}public void setState(String state) {this.state = state;}}
Originator
package com.lanhuigu.base.design.behavior.memento;/** * 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
package com.lanhuigu.base.design.behavior.memento;/** * Caretaker: 负责保存好备忘录,不能对备忘录的内部进行操作或检索 */public class Caretaker {private Memento memento;public Memento getMemento() {return memento;}public void setMemento(Memento memento) {this.memento = memento;}}Client:
package com.lanhuigu.base.design.behavior.memento;public class Test {public static void main(String[] args) {Originator originator = new Originator();originator.setState("某些人穷得叮当响的时候,把你当朋友");// 将数据封存到Caretaker中(穷的行为)Caretaker caretaker = new Caretaker();caretaker.setMemento(originator.createMemento());originator.showState();//富裕的行为originator.setState("某些人富得流油的时候,便把你当陌生人");originator.showState();// 将数据重新导入(恢复为一开始穷的行为)originator.setMemento(caretaker.getMemento());originator.showState();}}
运行结果:
0 0
- 设计模式(18)------备忘录模式
- 设计模式(18)-备忘录模式
- 设计模式(18)--备忘录模式
- 设计模式(18)--备忘录模式
- 设计模式(18) ------------备忘录模式
- 设计模式:18 备忘录模式
- 设计模式(18)-备忘录模式
- 设计模式-18-备忘录模式
- 设计模式-----备忘录模式
- 设计模式 备忘录模式
- 【设计模式】备忘录模式
- 设计模式 - 备忘录模式
- 设计模式:备忘录模式
- 设计模式 - 备忘录模式
- 设计模式 - 备忘录模式
- 设计模式 - 备忘录模式
- 设计模式:备忘录模式
- 【设计模式】备忘录模式
- Mac 下使用ISIS 处理数据 -CTX,HiRISE,LRO
- 设计模式(16)------迭代器模式
- 设计模式(17)------中介者模式
- 这只是一个测试博客Visual Studio Ultimate 2013,vs2013.5_ult_chs.iso,vs2013.5_ult_enu.iso
- Hi3516A开发--ethtool安装和使用
- 设计模式(18)------备忘录模式
- 设计模式(19)------观察者模式
- Robot Framework自动化测试--安装篇
- hdu 5551/Huatuo's Medicine
- CVPR2016目标检测新进展
- Python实现最小二乘法
- 构建高性能web之路------mysql读写分离实战
- Activity的生命周期测试
- Hadoop 数据节点DataNode异常