何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态。
public class Original {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Original(String value) {
this.value = value;
}
public Memento createMemento(){
return new Memento(value);
}
public void restoreMemento(Memento memento){
this.value = memento.getValue();
}
}
public class Memento {
private String value;
public Memento(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public class Storage {
private Memento memento;
public Storage(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
public class Test {
public static void main(String[] args) {
Original origi = new Original("egg");// 创建原始类
Storage storage = new Storage(origi.createMemento()); // 创建备忘录
System.out.println("初始化状态为:" + origi.getValue()); origi.setValue("niu"); // 修改原始类的状态
System.out.println("修改后的状态为:" + origi.getValue());
origi.restoreMemento(storage.getMemento()); // 回复原始类的状态
System.out.println("恢复后的状态为:" + origi.getValue());
}
}