Memento備忘錄設計模式是一個保存另一個對象內部狀態拷貝的對象,這樣之後就能夠將該對象恢復到之前保存的狀態。Memento備忘錄設計模式的結構以下: java
Memento備忘錄設計模式有如下3個重要角色: 設計模式
Originator:須要保存內部狀態的對象。 this
Caretaker:爲Originator保存並恢復狀態的對象。 設計
Memento:存放Originator內部狀態的對象,由Originator進行讀寫,而且Caretaker進行維護。 rest
Memento備忘錄設計模式例子代碼以下: code
// Memento class Memento{ private String state; public Memento(String state){ this.state = state; } public String getState(){ return state; } } // Caretaker class Caretaker{ private Stack<Memento> mementos = new Stack<Memento>(); public void addMemento(Memento m){ mementos.push(m); } public Memento getMemento(){ if(!mementos.empty()){ return mementos.pop(); } return null; } } // Originator public class Originator{ private String state; public Originator(String state){ this.state = state; } public void setState(){ this.state = state; } public String getState(){ return state; } public Memento createMemento(String state){ return new Memento(state); } public static void main(String[] args){ Originator originator = new Originator(「State1」); Caretaker caretaker = new Caretaker(); caretaker.addMemento(originator. createMemento(originator.getState())); originator.setState(「State2」); String restore = caretaker. getMemento().getState(); System.out.println(「Current originator state=」 + originator.getState() + 「,restore state=」 + restore); } }
程序運行結果: 對象
Currentoriginator state= State2,restore state= State1 開發
Memento備忘錄設計模式經常使用於文字編輯軟件/IDE集成開發環境中的撤銷和恢復操做。 get