1.意圖
在不破壞封裝的前提下,捕獲一個對象的內部狀態,並在該對象外保存這個狀態
這樣就可以將該對象恢復到原先保存的狀態
2.參與者
Memento - 存儲對象狀態
- 防止原發器以外的其它對象訪問備忘錄
Originato - 原發器創建一個備忘錄,用以記錄當前時刻它的內部狀態
Caretaker -負責保存好備忘錄
-不能對備忘錄的對象進行操作或者檢測
3.結構
4.代碼
public class Memento {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Originato {
private String state;
public Memento createMemento() {
Memento memento = new Memento();
memento.setState(state);
return memento;
}
public void resumeByMemento(Memento memento) {
this.state = memento.getState();
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
public class Caretaker {
Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
public class Client {
public static void main(String[] args) {
Originato o = new Originato();
o.setState("1");
Caretaker c =new Caretaker();
c.setMemento(o.createMemento());
o.setState("2");
o.setState("3");
o.resumeByMemento(c.getMemento());//恢復到一狀態
System.out.println(o.getState());
}
}