一. 備忘錄模式
定義:在不破壞封裝性的前提下,捕獲乙個物件的內部狀態。並在該物件之外儲存這個狀態。
這樣以後就可將該物件恢復到原先儲存的狀態。
結構圖:
使用範圍:
memento 模式比較適用於功能比較複雜的。但須要維護或記錄屬性歷史的類,或者須要儲存的屬性僅僅是眾多屬性中的一小部分時。originator 能夠依據儲存的 memento 資訊還原到前一狀態。
**:
[cpp]view plain
copy
//備忘錄類
//負責儲存 originator 物件的內部狀態
class
memento
memento(const
string& sdt)
void
setstate(
const
string& sdt)
string getstate()
private
: string _sdt;
};
//原始類
//負責建立備忘錄
class
originator
originator(const
string& sdt)
//建立備忘錄,將當前資訊儲存在乙個備忘錄物件中
memento* creatememento()
//恢復備忘錄,將備忘錄物件上的資訊恢復出來
void
restoretomemento(memento* mt)
string getstate()
void
setstate(
const
string& sdt)
void
printstate()
private
:
string _sdt;
memento* _mt;
};
//測試**
intmain(
intargc,
char
* ar**)
二. 說明
1. memento 負責儲存 originator 物件的內部狀態,並可防止 originator 以外的其他物件訪問備忘錄(詳細實現方法,就是讓其全部方法都為私有的)。
2. memento 宣告 originator 為它的友元類,這樣 originator 就能夠訪問它的全部函式。即對 originator 是開放的。
設計模式 備忘錄模式 C 實現
備忘錄模式 memento pattern 儲存物件的某個狀態,以便在適當的時候恢復。備忘錄模式屬於行為型模式。意圖 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。解決問題備忘錄模式就是在不破壞封裝的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣可以在...
二十三種設計模式19 備忘錄模式(Memento)
主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下 假設有原始類a,a中有各種屬性,a可以決定需要備份的屬性,備忘錄類b是用來儲存a的一些內部狀態,類c呢,就是乙個用來儲存備忘錄的,且只能儲存,不能修改等操作。做個圖來分析一下 測試類 1.public...
C 設計模式 備忘錄模式
應用 ifndef caretaker h define caretaker h include memento.h class caretaker void setmemento memento memento 備忘錄物件 private memento memento endif caretak...