设计模式16——Memento设计模式
来源:互联网 发布:景甜到底什么来头知乎 编辑:程序博客网 时间:2024/06/03 18:47
Memento备忘录设计模式是一个保存另外一个对象内部状态拷贝的对象,这样以后就可以将该对象恢复到以前保存的状态。Memento备忘录设计模式的结构如下:
Memento备忘录设计模式有以下3个重要角色:
Originator:需要保存内部状态的对象。
Caretaker:为Originator保存并恢复状态的对象。
Memento:存放Originator内部状态的对象,由Originator进行读写,并且Caretaker进行维护。
Memento备忘录设计模式例子代码如下:
//Memento
class Memeto{
private String state;
public Memeto(String state){
this.state = state;
}
public String getState(){
return state;
}
}
//Caretaker
class Caretaker{
private Stack<Memento> mementos = new Stack<Memento>();
public void addMemento(Memento m){
mementos.push(m);
}
public Memento getMemento(){
if(!mementos.empty()){
return mementos.pop();
}
return null;
}
}
//Originator
public class Originator{
private String state;
public Originator(String state){
this.state = state;
}
public void setState(){
this.state = state;
}
public String getState(){
return state;
}
public Memnto createMemento(String state){
return new Memento(state);
}
public static void main(String[] args){
Originator originator = new Originator("State1");
Caretaker caretaker = new Caretaker();
caretaker.addMemento(originator.createMemento(originator.getState()));
originator.setState("State2");
String restore = caretaker.getMemento().getState();
System.out.println("Current originator state= " + originator.getState() + ",restore state=" + restore);
}
}
程序运行结果:
Currentoriginator state = State2,restore state = State1
Memento备忘录设计模式常用于文字编辑软件/IDE继承开发环境中的撤销和恢复操作。
- 设计模式16——Memento设计模式
- 设计模式16——Memento设计模式
- 设计模式——备忘录模式(Memento)
- 【设计模式】—— 备忘录模式Memento
- 设计模式—Memento备忘录模式
- JAVA设计模式—备忘录模式(Memento)
- 设计模式--Memento 模式
- 设计模式笔记——Memento
- 设计模式之Memento
- 设计模式之Memento
- 设计模式之 memento
- Memento---设计模式
- 【设计模式】之一Memento
- JAVA设计模式-Memento
- Memento(备忘录)设计模式
- 设计模式 Design Parttern ——备忘录模式Memento
- 深入浅出设计模式(17)——Memento模式
- java设计模式19——备忘录模式(Memento)
- poj 1276 Cash Machine(多重背包)
- range
- SVN服务器搭建和使用(三)
- android设置字体为LED数字样式
- 修改linux文件权限命令:chmod
- 设计模式16——Memento设计模式
- memcache初步探索
- POJ 聪明的打字员
- 职场生存 3个自我息怒小技巧
- Android动态生成组件
- TortoiseSVN客户端重新设置用户名和密码
- 液晶电视墙为矿产行业带来的好处
- PMC全线出击2014闪存峰会(Flash Memory Summit)
- C++11 thread::join(4)