大話設計模式讀書筆記之備忘錄模式

2021-08-11 05:17:47 字數 1572 閱讀 7002

1.定義

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

(如遊戲中的恢復到某一關卡).

2.uml 類圖:

解釋說明:

originator(發起人):負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可使用備忘錄恢復內部狀態。originator可根據需要決定memento儲存originator的哪些內部狀態。

memento(備忘錄):負責儲存originator物件的內部狀態,並可防止originator以外的其他物件訪問備忘錄memento。備忘錄有兩個介面,caretaker只能看到備忘錄的窄介面,它只能將備忘錄傳遞給其它物件。originator能夠看到乙個寬介面,允許它訪問返回到先前狀態所需的所有資料。

caretaker(管理者):負責儲存好備忘錄memento,不能對備忘錄的內容進行操作或檢查。

3.簡單**實現

package com.guo.mementopattern;

public

class originator

public

void

setstate(string state)

public

void

show()

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

public memento creatememento()

//恢復備忘錄,將memento匯入並恢復相關資料

public

void

setmemento(memento memento)

}

package com.guo.mementopattern;

public

class

memento

//只有讀沒有設定許可權

public string getstate()

}

package com.guo.mementopattern;

public

class caretaker

public

void

setmemento(memento memento)

}

package com.guo.mementopattern;

public

class mementoclient

}

4.使用場景

大話設計模式 讀書筆記備忘錄模式

以儲存遊戲為例,在玩魂斗羅之前,一般在快到boss的時候,我會先儲存遊戲的狀態。與boss作戰時萬一遊戲掛了。可以利用備忘錄恢復到戰前狀態了。備忘錄模式 獲取乙個物件的某個狀態,並且在物件之外儲存,使得在需要的情況下恢復物件。不會破壞封裝性 又叫做快照模式 snapshot pattern 或者to...

大話設計模式之備忘錄模式

備忘錄模式就是把乙個狀態儲存在乙個類當中,需要用的時候,拿出來。例子如下 主介面類 一共有四個類 主角類originator記錄主角基本資訊,記憶類memento,管理者類caretaker,主函式類main package mementopattern public class main publ...

《設計模式之禪》讀書筆記 19 備忘錄模式

定義 備忘錄模式在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將該物件恢復到原先儲存的狀態。類圖 originator發起人角色 記錄當前時刻的狀態,負責定義哪些屬於備份範圍的狀態,負責建立和恢復備忘錄資料。memento備忘錄角色 負責儲存originat...