備忘錄模式,在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。
把要儲存的細節給封裝在了memento中了,哪一天要更改儲存的細節也不用影響客戶端了。
應用:memento模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分時,originator可以根據儲存的memento資訊還原到前一狀態。
#include using namespace std;
class state //狀態儲存箱
; //建構函式
int getvit() //獲取體力
int getatk() //獲取攻擊力
int getdef() //獲取防禦力
};class statemanger //狀態管理
state* getstate() //獲取狀態 };
class gamerole //遊戲角色
void fight() //攻打boss };
int main()
顯示結果:
[hjf@hjf 設計模式]$ ./a.out
當前角色狀態:
體力:100
攻擊力:100
防禦力:100
當前角色狀態:
體力:0
攻擊力:0
防禦力:0
當前角色狀態:
體力:100
攻擊力:100
防禦力:100
設計模式學習 備忘錄模式
備忘錄模式 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可以將該物件恢復到原先儲存的狀態 originator 發起人,負責建立乙個備忘錄memento,用以記錄當前時刻他的內部狀態,並可使用備忘錄恢復內部狀態,originator可根據需要覺得mement...
學習設計模式 備忘錄模式
說明 定義 在不破壞封裝性的前提下,捕獲乙個物件內部狀態,並在物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原來的模樣。需求 購買商品時,儲存商品購買時的資訊,以便使用者可以通過快照功能檢視商品以前的資訊。解決方式 a.定義乙個備忘錄類 商品資訊 b.定義乙個備忘錄管理類,用於儲存備忘錄當前狀態...
設計模式 備忘錄模式
錄入大批人員資料。正在錄入當前人資料時,發現上乙個人的資料錄錯了,此時需要恢復上乙個人的資料,再進行修改。word文件編輯時,突然電腦宕機或者斷電,再開啟時,可以看到word提示你恢復以前的文件。就死儲存某個物件內部狀態的拷貝,這樣以後就可以將該物件恢復到原先的狀態。源髮器類originator 備...