#pragma once
#ifndef memento_h
#define memento_h
#include typedef std::string state;
class memento;
class originator
; // 把memento 的介面函式都設定為私有的,而originator 是它的友元,
// 這樣保證了只有originator 可以對其訪問
class memento
; #endif
#include "stdafx.h"
#include "memento_impl.h"
#include originator::originator()
originator::originator(const state& rstate)
: m_state(rstate)
originator::~originator()
state originator::getstate()
void originator::setstate(const state& rstate)
memento* originator::creatememento()
void originator::restorestate(memento* pmemento) }
void originator::printstate()
memento::memento(const state& rstate)
: m_state(rstate)
state memento::getstate()
void memento::setstate(const state& rstate)
// memento.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include "memento_impl.h"
#include //在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,
//並在該物件之外儲存這個狀態.這樣以後就可將該物件恢復到原先儲存的狀態.
int _tmain(int argc, _tchar* argv)
行為型設計模式 備忘錄模式
在我們平時的開發工作中,很多場景需要我們備份和恢復,比如資料庫binlog日誌備份 mvcc多版本併發控制 瀏覽器的回退 chrome奔潰後重新開啟恢復之前的頁面。在gof 設計模式 定義如下 captures and externalizes an object s internal state ...
設計模式 行為型模式 備忘錄模式
在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,以便以後當需要時能將該物件恢復到原先儲存的狀態。又叫快照模式。優點 缺點資源消耗大。如果要儲存的內部狀態資訊過多或者特別頻繁,將會占用比較大的記憶體資源。結構主要角色 類圖 實現 備忘錄 class memento todo...
備忘錄模式 行為型
3 相關模式 1 備忘錄模式和命令模式 這兩個模式可以組合使用。命令模式實現中,在實現命令的撤銷和重做的時候,可以使用備忘錄模式,在命令操作的時候記錄下操作前後的狀態,然後在命令撇銷和重做的時候,直接使用相應的備忘錄物件來恢復狀態就可以了在這種撤銷的執行順序和重做的執行順序可控的情況下,備忘錄物件還...