备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。
package com.ceshi18;
/**
* 原件
*/
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();
}
}
package com.ceshi18;
/**
* 备忘
*/
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;
}
}
package com.ceshi18;
//存储
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;
}
}
package com.ceshi18;
public class Test {
public static void main(String[] args) {
// 创建原始类
Original origi = new Original("小鸡");
// 创建备忘录
Storage storage = new Storage(origi.createMemento());
// 修改原始类的状态
System.out.println("初始化状态为:" + origi.getValue());
origi.setValue("老鹰");
System.out.println("修改后的状态为:" + origi.getValue());
// 回复原始类的状态
origi.restoreMemento(storage.getMemento());
System.out.println("恢复后的状态为:" + origi.getValue());
}
}
说白了,就是用了一个中间类来存储之前的记录,如果记录需要时间可以用map来存储。
来源:https://www.cnblogs.com/zhengyuanyuan/p/10756695.html