路一步步走>> 設計模式十八:Memento-備忘錄
阿新 • • 發佈:2018-12-08
package com.test.DPs.XingWei.Memento; /** * 行為型:Memento-備忘錄 外觀:作用面為 物件 */ class Original{ private String value; public String getValue(){ return value; } public void setValue(String value){ this.value = value; } public Original(String value){ this.value = value; } public Memento createMemento(){ return new Memento(value); } public void restoreMemento(Memento memento){ this.value = memento.getValue(); } } class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue(){ return value; } public void setValue(String value){ this.value = value; } } class Storage{ private Memento memento; public Storage(Memento memento){ this.memento = memento; } public Memento getMemento(){ return memento; } public void setMemento(Memento memento){ this.memento = memento; } } /** * 用途:在不破壞封裝性的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將該物件恢復到原先儲存的狀態。 * * 理解:類 似數學,先設 已知條件-未知數 x、y、z類:原物件-狀態類-儲存類 */ class Test{ public static void main(String[] args) { Original origi = new Original("egg"); // 建立原始類 Storage storage = new Storage(origi.createMemento()); // 建立備忘錄 System.out.println("初始化狀態為:" + origi.getValue()); // 修改原始類的狀態 origi.setValue("niu"); System.out.println("修改後的狀態為:" + origi.getValue()); origi.restoreMemento(storage.getMemento()); // 回覆原始類的狀態 System.out.println("恢復後的狀態為:" + origi.getValue()); } }