設計模式筆記 21 備忘錄模式(行為型)

2021-09-05 22:39:00 字數 867 閱讀 7339

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

在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公有介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞物件本身的封裝性,看下面的結構圖和**。

備忘錄模式結構圖:

上圖中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...