備忘錄模式 保護和恢復內部狀態

2021-10-06 10:42:48 字數 1148 閱讀 5712

memento模式的關鍵就是要在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以利用該儲存的狀態實施恢復操作。

originator(原發器):建立乙個備忘錄,並儲存它的當前內部狀態,也可以使用備忘錄來恢復其內部狀態。

mementor(備忘錄):儲存原發器的內部狀態,備忘錄的設計一般可以參考原發器的設計,根據實際需要確定備忘錄類中的屬性。

caretaker(負責人):負責人又稱為管理者,在負責人類中可以儲存乙個或多個備忘錄物件,它只負責儲存物件,而不能修改物件,也無須知道物件的實現細節

memento模式基本**

原發器類

class

originator

set}

public

mementor

creatememento()

//建立備忘錄儲存它當前的內部狀態

public

void

setmementor

(memento memento)

//使用備忘錄恢復

public

void

show()

備忘錄類

class

memento

public

string state }

}

管理者類

class

caretaker

set}

}

客戶端類

class

program

}

優點:缺點:

適用場合:

本質:儲存和恢復內部狀態

備忘錄模式和原型模式

練習例項-象棋悔棋

備忘錄模式

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

備忘錄模式

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

備忘錄模式

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