设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 备忘录模式(Memento Pattern)
在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
一、说明:
1、Memento 备忘录;
2、Original 原始对象;
3、Storage 存储对象。
二、Java实现,代码如下:
1、Memento
package com.java.designPattern.memento;
/**
* 备忘录
*
*/
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;
}
}
2、Original
package com.java.designPattern.memento;
/**
* 原始对象
*
*/
public class Original {
private String value;
public Original(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Memento createMemento() {
return new Memento(value);
}
public void restoreMemento(Memento memento) {
this.value = memento.getValue();
}
}
3、Storage
package com.java.designPattern.memento;
/**
* 存储备忘录
*
*/
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;
}
}
4、Test
package com.java.designPattern.memento;
/**
* 测试类
*
*/
public class Test {
public static void main(String[] args) {
Original original = new Original("Original");
Storage storage = new Storage(original.createMemento());
System.out.println("Original : " + original.getValue());
original.setValue("Memento");
System.out.println("Chage value. Original : " + original.getValue());
original.restoreMemento(storage.getMemento());
System.out.println("Restore Memento. Original : " + original.getValue());
}
}
输出:
Original : Original
Chage value. Original : Memento
Restore Memento. Original : Original