备忘录模式:
用一个对象来存储另外一个对象的内部状态的快照,关键点是在不破坏封装的情况下,将一个对象的状态捕捉住,并外部化,存储起来,从而可以在合适的时候,把这个对象还原。
package com.jerry.design.memento;
// 测试类
public class Test {
private static Originator o = new Originator();
private static Caretaker c = new Caretaker();
public static void main(String[] args) {
o.setState("On");
c.setMemento(o.createMemento());
o.setState("Off");
System.out.println(c.getMemento());
}
}
interface NarrowMemento {
}
class Originator {
private String state;
private NarrowMemento memento;
public Originator() {
}
public NarrowMemento createMemento() {
memento = new Memento(this.state);
return memento;
}
public void restoreMemento(NarrowMemento memento) {
Memento aMemento = (Memento) memento;
this.setState(aMemento.getState());
}
public String getState() {
return this.state;
}
public void setState(String state) {
this.state = state;
}
// 内部类
protected class Memento implements NarrowMemento {
private String savedState;
private Memento(String someState) {
savedState = someState;
}
private void setState(String someState) {
savedState = someState;
}
private String getState() {
return savedState;
}
}
public NarrowMemento getNarrowMemento() {
return memento;
}
}
class Caretaker {
private NarrowMemento memento;
public NarrowMemento getMemento() {
return this.memento;
}
public void setMemento(NarrowMemento memento) {
this.memento = memento;
}
}