(行為模式)MEMENTO——備忘錄模式
阿新 • • 發佈:2019-01-28
1、意圖
在不破壞封裝的條件下,將一個物件的狀態捉住,並在該物件外部儲存這個狀態,從而可以在將來合適的時候把這個物件還原到儲存起來的狀態。
2、核心思想
備忘錄物件是一個用來儲存另外一個物件內部狀態的快照的物件。
3、優缺點分析
適用於功能比較複雜的,但需要記錄或維護屬性歷史的類;或者需要儲存的屬性只是眾多屬性中的一小部分時Originator可以根據儲存的Memo還原到前一狀態。
4、標準UML圖
Originator(發起人):負責建立一個備忘錄Memento,用以記錄當前時刻它的內部狀態,並可使用備忘錄恢復內部狀態。Originator可根據需要決定Memento儲存Originator的哪些內部狀態。
Memento(備忘錄):負責儲存Originator物件的內部狀態,並可防止Originator以外的其他物件訪問備忘錄Memento。
備忘錄有兩個介面,Caretaker只能看到備忘錄的窄介面(把對外的介面作為private成員,而把需要訪問這些介面函式的類作為這個類的友元類),它只能將備忘錄傳遞給其他物件。Originator能夠看到一個寬介面(把對外的介面作為public成員),允許它訪問返回到先前狀態所需的所有資料。
Caretaker(管理者):負責儲存好備忘錄Memento,不能對備忘錄的內容進行操作或檢查。