備忘錄模式(memento pattern)
備忘錄模式(memento pattern):屬於對象的行爲模式,在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態。這樣以後就將該對象恢復到原鄉保存的狀態。
備忘錄模式UML圖
備忘錄模式涉及的角色
發起人(Originator)角色:負責創建一個含有當前的內部狀態的備忘錄對象。並可使用備忘錄恢復內部狀態。備忘錄角色(Memento)角色:負責存儲 Originator 對象的內部狀態,並可防止 Originator 以外的其它對象訪問備忘錄 Memento。備忘錄包含兩個等效的接口:
-
窄接口:管理者(Caretaker)對象只能看到備忘錄的窄接口(narrow interface),它只能將備忘錄傳遞給其它對象。
-
寬接口:發起人(Originator)能夠看到一個寬接口,允許它訪問返回到先前狀態所需的所有數據。
管理者角色(Caretaker)角色:負責保存好備忘錄對象 Memento,不能對備忘錄的內容進行操作或檢查。
示例代碼
發起人類 Originator
備忘錄類 Memento
管理者類 Caretaker
客戶端測試類 TestMementoPattern
備忘錄模式使用場景
備忘錄模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者需要保存的屬性只是衆多熟悉中的一小部分時,Originator 可以根據保存的 Memento 信息還原到前一狀態。
Java學習資料獲取(複製下段連接至瀏覽器即可)
data:text/html;charset=UTF-8;base64,5p625p6E5biI5a2m5Lmg6LWE5paZ5YWN6LS56aKG5Y+W6K+35Yqg5omj5omj5Y+35pivMTAxODkyNTc4MA==