C 設計模式之備忘錄模式(Memento)

2022-09-29 12:03:09 字數 803 閱讀 6054

當我們在實際應用中需要提供撤銷機制,當乙個物件可能需要再後續操作中恢復其內部狀態時,就需要使用備忘錄模式。其本質就是物件的序列化和反序列化的過程,支援回滾操作。

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

類檢視實現

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...