設計模式之備忘錄模式(C )

2021-08-29 23:06:41 字數 1126 閱讀 4984

備忘錄,在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。該模式很好理解,其uml圖如下:

在originator中提供了建立memento的介面,具體要儲存什麼樣的內容,則根據需求來定。而caretaker則是負責管理memento。而儲存的內容的具體的組織方式什麼的都封裝在memento中了。這樣做耦合性很低,方便維護和擴充套件。示例**如下:

// memomodel.h檔案

#pragma once

#include

#include

class

memo

;class

originator

void

setstate

(std::string str)

void

recoverstate

(memo * p);}

;class

memo};

memo * originator::

creatememo()

void originator::

recoverstate

(memo * p)

class

caretaker

~caretaker()

memo *

getmemo()

void

setmemo

(memo * p)

};

測試**如下:

#include

#include

"memomodel.h"

intmain()

測試結果如下圖:

備忘錄模式把要儲存的細節封裝在了memo類中,如果要修改儲存細節的話,不會影響到客戶端。備忘錄模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性中的一小部分時。

c 設計模式之備忘錄模式

備忘錄模式memento pattern 定義 備忘錄模式,是行為模式之一,它的作用是儲存物件的內部狀態,並在需要的時候 undo rollback 恢復到以前的狀態。備忘錄模式的類結構圖 備忘錄模式的角色 1.originator 發起者 負責建立乙個備忘錄memento,用以記錄當前時刻自身的內...

設計模式之備忘錄模式

機器 public class machine public void startplay disc.setluminance 60 disc.settime 0 disc.setvolume 80 public void stopplay disc.setluminance 70 disc.set...

設計模式之備忘錄模式

定義 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。備忘錄模式有三個角色 以儲存遊戲進度為例,退出遊戲前存檔,再進入遊戲就會顯示退出之前的狀態。示例 遊戲發起人類 public class game public state cr...