memento備忘錄設計模式是乙個儲存另外乙個物件內部狀態拷貝的物件,這樣以後就可以將該物件恢復到以前儲存的狀態。memento備忘錄設計模式的結構如下:
memento備忘錄設計模式有以下3個重要角色:
originator:需要儲存內部狀態的物件。
caretaker:為originator儲存並恢復狀態的物件。
memento:存放originator內部狀態的物件,由originator進行讀寫,並且caretaker進行維護。
memento備忘錄設計模式例子**如下:
//memento
class memeto{
private string state;
public memeto(string state){
this.state = state;
public string getstate(){
return state;
//caretaker
class caretaker{
private stackmementos = new stack();
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 memnto 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繼承開發環境中的撤銷和恢復操作。
設計模式16 Memento設計模式
memento備忘錄設計模式是乙個儲存另外乙個物件內部狀態拷貝的物件,這樣以後就可以將該物件恢復到以前儲存的狀態。memento備忘錄設計模式的結構如下 memento備忘錄設計模式有以下3個重要角色 originator 需要儲存內部狀態的物件。caretaker 為originator儲存並恢復...
設計模式 備忘錄模式(Memento)
主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下 假設有原始類a,a中有各種屬性,a可以決定需要備份的屬性,備忘錄類b是用來儲存a的一些內部狀態,類c呢,就是乙個用來儲存備忘錄的,且只能儲存,不能修改等操作。original類是原始類,裡面有需要儲存...
設計模式(十八) 狀態變化模式 memento
狀態變化模式包括 state和memento 備忘錄 在元件構建過程中,某些物件的狀態經常面臨變化,如何對這些變化進行有效的管理,又同事維持高層模組的穩定?軟體構建過程中,某些物件狀態轉換過程中,如果想回溯到之前的狀態,又不想暴露實現細節。乙個程式有在每個時候擁有的序列號都是不同的,代表他這個時候的...