【JAVA設計模式】18.備忘錄模式
阿新 • • 發佈:2018-12-12
顧名思義,備忘錄模式用於當資訊發生改變時回溯回之前存在的某一個版本。
UML圖:
備忘錄類Memento,提供修改和獲得內部資訊的方法:
class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } public void setState(String state) { this.state = state; } }
備忘錄存放類CareTaker,提供了備忘錄的賦值和取值方法,用於儲存和回溯備忘錄:
class Caretaker {
private Memento memento;
public Memento retrieveMemento() {
return this.memento;
}
public void saveMemento(Memento memento) {
this.memento = memento;
}
}
使用者操作的源物件,提供了生成備忘錄以及恢復備忘錄的方法:
class Originator { private String state; public Memento createMemento() { return new Memento(state); } public void restoreMemento(Memento memento) { this.state = memento.getState(); } public String getState() { return state; } public void setState(String state) { this.state = state; System.out.println("當前狀態:" + this.state); } }
客戶端使用:客戶使用源物件,當物件需要記錄至備忘錄時,呼叫createMemento方法生成備忘錄,並將其記錄至Caretaker內,當需要恢復至備忘錄狀態時呼叫restoreMemento方法:
Originator o = new Originator();
Caretaker c = new Caretaker();
o.setState("On");
c.saveMemento(o.createMemento());
o.setState("Off");
o.restoreMemento(c.retrieveMemento());