在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態。
在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公有介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞物件本身的封裝性,看下面的結構圖和**。
備忘錄模式結構圖:
上圖中originator為原發器,也可以講發起者,可以建立乙個備忘錄(creatememento),memento為備忘錄,負責儲存原發器中的內部狀態。caretaker主要負責儲存備忘錄。**如下:
/// ///返回開篇(索引)備忘錄類
///
public class
memento
}public memento(string state)
}/// ///
原發器類
///
public class
originator
public
memento creatememento()
public void setmemento(memento memento)
}/// ///
管理者///
public class
caretaker
}/// ///
客戶端程式
///
class
program
}
設計模式 行為 備忘錄
pragma once ifndef memento h define memento h include typedef std string state class memento class originator 把memento 的介面函式都設定為私有的,而originator 是它的友元,...
行為型設計模式 備忘錄模式
在我們平時的開發工作中,很多場景需要我們備份和恢復,比如資料庫binlog日誌備份 mvcc多版本併發控制 瀏覽器的回退 chrome奔潰後重新開啟恢復之前的頁面。在gof 設計模式 定義如下 captures and externalizes an object s internal state ...
設計模式 行為型模式 備忘錄模式
在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,以便以後當需要時能將該物件恢復到原先儲存的狀態。又叫快照模式。優點 缺點資源消耗大。如果要儲存的內部狀態資訊過多或者特別頻繁,將會占用比較大的記憶體資源。結構主要角色 類圖 實現 備忘錄 class memento todo...