1 简介
备忘录模式(Memento Pattern)定义:在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
2 代码
(1)原发器(Originator)
public class Originator {
private String state;
public Originator(String state) {
this.state=state;
}
public void setState(String state) {
this.state=state;
}
public String getState() {
return state;
}
public Memento createMemento() {
return new Memento(this);
}
public void restoreMemento(Memento m) {
state=m.getState();
}
public void show() {
System.out.println(state);
}
}
(2)备忘录(Memento)
public class Memento {
private String state;
public Memento(Originator o) {
state=o.getState();
}
public void setState(String state) {
this.state=state;
}
public String getState() {
return state;
}
}
(3)负责人(Caretaker)
public class Caretaker {
private Memento memento;
public void setMemento(Memento m) {
this.memento=m;
}
public Memento getMemento() {
return memento;
}
}
(4)客户端(Client)
public class Client {
public static void main(String[] args) {
Caretaker caretaker=new Caretaker();
Originator originator=new Originator("状态一");
caretaker.setMemento(originator.createMemento());
originator.show();
System.out.println("---------------");
originator.setState("状态二");
originator.show();
System.out.println("---------------");
originator.restoreMemento(caretaker.getMemento());
originator.show();
}
}
状态一
---------------
状态二
---------------
状态一