//發起人 class Originator { private String state = ""; public String getState() { return state; } public void setState(String state) { this.state = state; } public Memento createMemento(){ return new Memento(this.state); } public void restoreMemento(Memento memento){ this.setState(memento.getState()); } } //備忘錄 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; } } // 對備忘錄進行管理 class Caretaker { private Memento memento; public Memento getMemento(){ return memento; } public void setMemento(Memento memento){ this.memento = memento; } } public class Client { public static void main(String[] args){ Originator originator = new Originator(); originator.setState("狀態1"); System.out.println("初始狀態:"+originator.getState()); Caretaker caretaker = new Caretaker(); caretaker.setMemento(originator.createMemento()); originator.setState("狀態2"); System.out.println("改變後狀態:"+originator.getState()); originator.restoreMemento(caretaker.getMemento()); System.out.println("恢復後狀態:"+originator.getState()); } }<strong> </strong>
備忘錄模式的優缺點和適用場景java
備忘錄模式的優勢有:編程
備忘錄模式的缺點:設計模式
若是有須要提供回滾操做的需求,使用備忘錄模式很是適合,好比jdbc的事務操做,文本編輯器的Ctrl+Z恢復等。編輯器
其餘設計模式:this
設計模式--依賴倒轉原則rest