當我們在實際應用中需要提供撤銷機制,當乙個物件可能需要再後續操作中恢復其內部狀態時,就需要使用備忘錄模式。其本質就是物件的序列化和反序列化的過程,支援回滾操作。
作用在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可以將該物件恢復到原先的狀態。
類檢視實現
typedef struct sysstate; //假設的乙個空結構,用來代表系統狀態
//還原點
class memento
sysstate& getstate()
prcrmslivate:
sysstate state;
};//執行系統
class system
}memento* backup()
private:
sysstate state;
};//還原控制器
class recoverycontrol
} long addrecoverypoint(memento* pmem)
memento* gwww.cppcns.cometrecoverypoint(long time)
void delrecoverypoint(long time)
private:
map m_mementos;
};int main()
應用場景
支援回滾操作的 地方,如遊戲存檔、事務回滾、程式的撤銷和恢復操作等。
本文標題: c++設計模式之備忘錄模式(memento)
本文位址: /ruanjian/c/225263.html
c 設計模式之備忘錄模式
備忘錄模式memento pattern 定義 備忘錄模式,是行為模式之一,它的作用是儲存物件的內部狀態,並在需要的時候 undo rollback 恢復到以前的狀態。備忘錄模式的類結構圖 備忘錄模式的角色 1.originator 發起者 負責建立乙個備忘錄memento,用以記錄當前時刻自身的內...
設計模式之備忘錄模式(C )
備忘錄,在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。該模式很好理解,其uml圖如下 在originator中提供了建立memento的介面,具體要儲存什麼樣的內容,則根據需求來定。而caretaker則是負責管理memento...
設計模式之備忘錄模式
機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...