備忘錄模式

2021-08-25 02:15:12 字數 1361 閱讀 4715

意圖

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

結構

(備忘錄):儲存

originator

(原發器)物件的內部狀態,

originator

根據需要決定儲存哪些內部狀態,防止自身以外的其它物件訪問備忘錄。備忘錄實際上是由兩個介面,其中

caretaker

(管理者)只能看到備忘錄的窄介面,即它只能將備忘錄傳遞給其他物件;而原發器可以看到乙個寬介面,允許他訪問回到原先狀態所需的所有資料,理想的情況是只允許生成原發器訪問本備忘錄的內部狀態。

2.originator

:建立乙個備忘錄以記錄當前時刻內部狀態,使用備忘錄恢復內部狀態。

3.caretaker

:負責儲存備忘錄,但不能處理其中的內容。

使用場合

需要儲存物件在某一時刻的狀態,並在以後需要的時候恢復到這個狀態。同時又不希望暴露物件的視線細節,破壞物件的封裝性,這時需要使用備忘錄模式。

效果

備忘錄模式在不破壞封裝性的前提下,實現對物件內部狀態的外部儲存。但如果儲存的狀態過多,或者設計不合理,則將產生過多的備忘錄物件而占用大量的系統資源。

using

system;

namespace

} class

gamerole

public

void setmemento()

public

void getmemento()

public

void hitboss()

public

void hitted()

public

void showstate()

", account);

console.writeline(" blood:", blood.tostring());

console.writeline(" magic:", magic.tostring());

console.writeline(); }

} class

memento }

public

int magic

} public memento(int blood, int magic)

} }

備忘錄模式

備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...

備忘錄模式

先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...

備忘錄模式

面臨問題 物件狀態的變化無端,如何回溯恢復物件在某個點的狀態?在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,要求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公用介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞...