設計模式 備忘錄模式

2021-07-17 02:08:46 字數 1356 閱讀 6566

備忘錄模式是一種行為模式,該模式業內關於儲存物件當前狀態,並且之後可以再次恢復到此狀態。備忘錄模式實現的方式需要保證被儲存的物件狀態不能被物件從外部訪問,目的是為了保護好被儲存的這些物件狀態的完整性以及內部實現不向外暴露。

在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將該物件恢復到原先儲存的狀態。

需要儲存乙個物件在某乙個時刻的狀態或部分狀態

如果需要乙個介面來讓其她物件得到這些狀態,將會暴露物件的實現細節並破壞物件的封裝性,乙個物件不希望外界,直接訪問其內部狀態,通過中間物件可以間接訪問其內部狀態。

示例**十分簡單,originator類中的state變數需要備份,以便在需要的時候恢復;memento類中,也有乙個state變數,用來儲存originator類中state變數的臨時狀態;而caretaker類就是用來管理備忘錄類的,用來向備忘錄物件中寫入狀態或者取回狀態。

originator類:

public class originator 

public void setstate(string state)

/*** 建立備忘錄

*/public memento creatememento()

/*** 恢復之前儲存的狀態

*/public void restorestate(memento memento)

@override

public string tostring() ';}}

memento類:

public class memento 

public string getstate()

public void setstate(string state)

@override

public string tostring() ';}}

caretaker類:

public class caretaker 

/*** 獲取存檔

*/public memento getmmemento()

}

test類:

public class testmemento 

}

測試結果:

當前狀態:狀態 - a

當前狀態:狀態 - b

存檔的狀態:memento

當前狀態:狀態 - a

設計模式 備忘錄模式

錄入大批人員資料。正在錄入當前人資料時,發現上乙個人的資料錄錯了,此時需要恢復上乙個人的資料,再進行修改。word文件編輯時,突然電腦宕機或者斷電,再開啟時,可以看到word提示你恢復以前的文件。就死儲存某個物件內部狀態的拷貝,這樣以後就可以將該物件恢復到原先的狀態。源髮器類originator 備...

設計模式 備忘錄模式

備忘錄模式 memento pattern 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。涉及角色 1.original 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻自身的內部狀態,並可使用備忘錄恢復內部狀態。ori...

設計模式 備忘錄模式

備忘錄模式又叫做快照模式 snapshot pattern 或token模式,是物件的行為模式。備忘錄物件是乙個用來儲存另外乙個物件內部狀態的快照的物件。備忘錄模式的用意是在不破壞封裝的條件下,將乙個物件的狀態捕捉 capture 住,並外部化,儲存起來,從而可以在將來合適的時候把這個物件還原到儲存...