Memento备忘录设计模式是一个保存另一个对象内部状态拷贝的对象,这样之后就能够将该对象恢复到之前保存的状态。Memento备忘录设计模式的结构以下: java
Memento备忘录设计模式有如下3个重要角色: 设计模式
Originator:须要保存内部状态的对象。 this
Caretaker:为Originator保存并恢复状态的对象。 设计
Memento:存放Originator内部状态的对象,由Originator进行读写,而且Caretaker进行维护。 rest
Memento备忘录设计模式例子代码以下: code
// Memento class Memento{ private String state; public Memento(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 Memento 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集成开发环境中的撤销和恢复操做。 get