設計模式學習 Memento 備忘錄

2022-02-19 15:29:50 字數 700 閱讀 3839

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

乙個備忘錄(memento)是乙個物件,它儲存另乙個物件在某個瞬間的內部狀態,而後者稱為備忘錄的原發器(originator)

適用性:

必須保持某個物件在某個時刻的狀態

如果乙個用介面來讓其它物件這節得到這些狀態,將會暴露物件的實現細節並破壞物件的封裝性

示例圖:

示例**:

//線條類

class cline

//撤銷移動

void undomoveto()

private:   

linestate

restorememento()

private:

linestate m_state;

};//線條備忘類

class clinememento

;//相對簡單的solver

class csolver

return m_pmem;

}public:

static csolver* instance()

private:

static csolver m_pinstance;

clinememento* m_pmem;

};也可以支援鍊錶形式的備忘錄,用於支援撤銷多個操作……

設計模式 Memento(備忘錄)

作用 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態.這樣以後就可將該物件恢復到原先儲存的狀態.uml結構圖 解析 memento模式中封裝的是需要儲存的狀態,當需要恢復的時候才取出來進行恢復.原理很簡單,實現的時候需要注意乙個地方 窄介面和寬介面.所謂的寬介面就是一般意...

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

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

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

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