基本介紹
備忘錄模式(memento pattern)在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態
可以這樣理解備忘錄模式:現實生活中的備忘錄是用來記錄有些要去做的事情,或者是記錄已經達成的共同意見,以防忘記了。而在軟體層面,備忘錄模式有這相同的含義,備忘錄物件用來記錄乙個物件的某種狀態,或者某些資料,當要做回退的時,可以從備忘錄裡獲取到原來的對資料進行恢復操作
備忘錄模式屬於行為模式
備忘錄模式的注意事項和細節
給使用者提供了一種可恢復狀態的機制,可以使使用者比較方便的恢復到歷史的某個狀態
實現了資訊的封裝,使得使用者不需要關心狀態的儲存細節
如果類的成員變數過多,勢必會占用比較大的資源,而且一次儲存都會消耗一定量的記憶體,這個需要注意
使用的場景:1.後悔藥 2.遊戲存檔 3.windows裡的ctri + z 4.ie的後退 5.資料庫的事務管理
為了節約記憶體,備忘錄模式和原型模式可以配合使用
**實現
使用備忘錄模式實現遊戲角色大戰後恢復到大戰前的狀態
//遊戲角色
public
class
gamerole
public
void
recovergamerolefrommemento
(memento memento)
public
void
display()
public
intgetvit()
public
void
setvit
(int vit)
public
intgetdef()
public
void
setdef
(int def)
}//備忘錄物件
public
class
memento
public
intgetvit()
public
void
setvit
(int vit)
public
intgetdef()
public
void
setdef
(int def)
@override
public string tostring()
}//守護者物件,儲存遊戲角色的狀態
public
class
carktaker
//獲取到第index個備忘錄物件
public memento get
(int index)
}//客戶端
public
class
client
}
設計模式 備忘錄模式
錄入大批人員資料。正在錄入當前人資料時,發現上乙個人的資料錄錯了,此時需要恢復上乙個人的資料,再進行修改。word文件編輯時,突然電腦宕機或者斷電,再開啟時,可以看到word提示你恢復以前的文件。就死儲存某個物件內部狀態的拷貝,這樣以後就可以將該物件恢復到原先的狀態。源髮器類originator 備...
設計模式 備忘錄模式
備忘錄模式 memento pattern 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。涉及角色 1.original 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻自身的內部狀態,並可使用備忘錄恢復內部狀態。ori...
設計模式 備忘錄模式
備忘錄模式是一種行為模式,該模式業內關於儲存物件當前狀態,並且之後可以再次恢復到此狀態。備忘錄模式實現的方式需要保證被儲存的物件狀態不能被物件從外部訪問,目的是為了保護好被儲存的這些物件狀態的完整性以及內部實現不向外暴露。在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣...