备忘录模式就是记住对象的每一步的状态,并且能够随时回滚。
1.组成部分
1.Originator
需要备份的对象。可以通过自己的方法产生备忘录Memento。
2.Memento
备忘录,记录Originator的历史状态。
3.Caretaker
用于统一管理Memento对象(Originator每一次进行操作,就会生成一个Memento对象),以及提供恢复功能。
2.备忘录模式实例
public class Originator {
private State state = State1.instance;
public void setState(int i) {
state.move(i);
}
public Memento save() {
return new Memento(this.state);
}
public void restore(Memento m) {
state = m.getState();
}
public static void main(String[] strs) {
Originator o = new Originator();
Caretaker c = new Caretaker();
c.addMemento(o.save());
o.setState(2);
o.restore(c.getMemento());
}
}
``
```java
public interface State {
public State move(int i);
public State getState();
}
public class Caretaker {
private List<Memento> list = new ArrayList<Memento>();
public void addMemento(Memento m) {
list.add(m);
}
public Memento getMemento() {
return list.get(list.size()-1);
}
}
public class Memento {
private State state;
public Memento(State state) {
this.state = state;
}
public State getState() {
return this.state;
}
}
总结:Originator是要备份的对象且生产备忘录。Caretaker的功能是管理备忘录和取出指定备忘录。Memento是备忘录的基本单元。