標籤:
備忘錄(Memento):在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外儲存這個狀態,並在該對象之外儲存這個狀態,這樣以後就可將該對象恢複到原先儲存的狀態。
package Memento;//發起人public class Originator { //記錄此刻內部狀態 private String state; public String getState() { return state; } public void setState(String state) { this.state = state; } //建立一個備忘錄儲存state public Memento createMemento(){ return new Memento(state); } //恢複備忘錄儲存state public void setMemento(Memento memento){ state=memento.getState(); } public void show() { System.out.println("State="+state); }}
package Memento;//備忘錄public class Memento { private String state; public Memento(String state) { this.state = state; } public String getState() { return state; } }
package Memento;//管理者public class Caretaker { //負責儲存好備忘錄Memento private Memento memento; public Memento getMemento() { return memento; } public void setMemento(Memento memento) { this.memento = memento; } public static void main(String[] args) { Originator originator=new Originator(); //初始化狀態 originator.setState("On"); originator.show(); //儲存狀態,由於有了很好的封裝可以隱藏originator的實現細節 Caretaker caretaker=new Caretaker(); caretaker.setMemento(originator.createMemento()); //改變狀態 originator.setState("Off"); originator.show(); originator.setMemento(caretaker.memento); originator.show(); }}
大話設計模式筆記 備忘錄模式