備忘錄模式

2022-03-16 21:57:26 字數 1632 閱讀 7901

memento模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要儲存的屬性只是眾多屬性的一小部門時,

originator可以根據儲存的memento資訊還原到前一狀態

**部分:

1

/**2

* originator(發起人):負責建立備忘錄memento,用來記錄當前時刻它的內部狀態,

3* 並可以使用備忘錄恢復內部狀態,originator可以根據需要決定memento儲存originator

4* 的哪些內部狀態5*/

6public

class

originator

1213

public

void

setstate(string state)

1617

/**建立備忘錄,將當前需要儲存的資訊匯入並例項化出乙個memento物件

*/18

public

memento creatememento()

21/**

22* 恢復備忘錄,將memento資料匯入並恢復資料

23*/

24public

void

setmemento(memento memento)

2728

public

void

show()

31 }

originator

1

/**2

* memento(備忘錄):負責儲存originator物件的內部狀態,並可防止originator以外

3* 的其它物件訪問備忘錄memento,備忘錄有兩個介面,garetaker只能看到備忘錄的窄介面,

4* 它只是將備忘錄傳遞給其它物件,originator是乙個寬介面,允許它訪問到先前狀態所需的所有資料5*/

6public

class

memento

1213

public

void

setstate(string state)

1617

public

memento(string state)

2122

public

memento()

25 }

memento

1

/**2

* garetaker(管理者):負責儲存好備忘錄memento,

3* 不能對備忘錄內容進行操作或檢查4*/

5public

class

garetaker

1112

public

void

setmemento(memento memento)

15 }

garetaker

1

public

class

mementotest

15 }

test

備忘錄模式

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

備忘錄模式

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

備忘錄模式

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