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继承开发环境中的撤销和恢复操作。
本文介绍了Memento备忘录设计模式,它允许对象在不违反封装原则的情况下捕获其内部状态,并能在稍后恢复这些状态。文章通过一个具体实例展示了备忘录模式的实现方式及其三个关键角色:Originator、Caretaker 和 Memento 的作用。
1485

被折叠的 条评论
为什么被折叠?



