設計模式 Memento(備忘錄)

2021-09-05 22:45:38 字數 940 閱讀 1788

作用:

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

uml結構圖:

解析:memento模式中封裝的是需要儲存的狀態,當需要恢復的時候才取出來進行恢復.原理很簡單,實現的時候需要注意乙個地方:窄介面和寬介面.所謂的寬介面就是一般意義上的介面,把對外的介面作為public成員;而窄介面反之,把介面作為private成員,而把需要訪問這些介面函式的類作為這個類的友元類,也就是說介面只暴露給了對這些介面感興趣的類,而不是暴露在外部.下面的實現就是窄實現的方法來實現的.

#include #include using namespace std; class memento; class originator ; // 把memento的介面函式都設定為私有的,而originator是它的友元, // 這樣保證了只有originator可以對其訪問 class memento ; originator::originator() originator::originator(const string& rstring) : m_string(rstring) originator::~originator() string originator::getstring() void originator::setstring(const string& rstring) memento* originator::creatememento() void originator::restorestring(memento* pmemento) } void originator::printstring() memento::memento(const string& rstring) : m_string(rstring) string memento::getstring() void memento::setstring(const string& rstring) int main()

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

主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下 假設有原始類a,a中有各種屬性,a可以決定需要備份的屬性,備忘錄類b是用來儲存a的一些內部狀態,類c呢,就是乙個用來儲存備忘錄的,且只能儲存,不能修改等操作。original類是原始類,裡面有需要儲存...

設計模式 備忘錄模式(memento)

在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態。memento 備份類,裡面包含部分或全部originator的屬性 便簽紙 caretaker 真正儲存備份的地方 便簽紙貼的地方 替答到。我也不知道怎麼就想到了這個。上課的時候...

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

備忘錄模式是行為模式之一,他的作用是備份物件內部資訊,並在需要的時候恢復以前物件的資訊。角色和職責 1.原生者 originator person 原物件 2.備忘錄 memento memento 該物件由originator建立,主要用來儲存originator的內部資訊 3.管理者 caret...