-
特點:玩過PC大型單機游戲的人蒋情,應(yīng)該都知道有一個存檔功能君丁,可以記錄游戲進度夭坪,如果有難點需要反復(fù)練習通關(guān)的地方,使用這個功能就很方便。
電腦系統(tǒng)中也有一個功能叫備份(macOS里面有time machine)忆肾,如果電腦系統(tǒng)做過備份荸频,之后使用過程中如果出現(xiàn)問題可以使用這個功能快速恢復(fù)。
Memento模式就是用來實現(xiàn)存檔客冈、備份類似的功能旭从,可以在程序的關(guān)鍵點對程序數(shù)據(jù)狀態(tài)進行備份,如果程序中途出現(xiàn)錯誤可以快速恢復(fù)數(shù)據(jù)郊酒,然后嘗試重新運行遇绞。 - 角色:
角色名稱 | 角色職責 |
---|---|
Originator(生成者) | 定義創(chuàng)建和恢復(fù)Memento角色的相關(guān)接口 |
Memento(紀念品) | 用于存儲Originator角色狀態(tài)數(shù)據(jù),此角色有兩種接口:寬接口:用于外部獲取數(shù)據(jù)集合的接口燎窘,也可以認為是Memento角色本身摹闽;窄接口:用于獲取Memento角色的內(nèi)部有限的信息接口。 |
Caretaker(負責人) | 對Originator的狀態(tài)進行管理褐健,比如何時進行備份和恢復(fù)付鹿,同時訪問Memento角色也只能通過寬接口或窄接口進行訪問。 |
寬接口與窄接口主要是通過語言的訪問權(quán)限控制的蚜迅,以下是Java中訪問權(quán)限分類舵匾,這兩種接口的設(shè)計實際上在所有設(shè)計模式中都有所體現(xiàn)。
1. public:所有類都可以訪問谁不。
2. protected:同一個包中的類或該類的子類才可以訪問坐梯。
3. 無:同一個包中的類可以訪問。
4. private:只有該類自身可以訪問刹帕。
-
角色關(guān)系:
代碼示例:Memento
以上文獻參考:《圖解設(shè)計模式》