24 Memento(行爲型)
-
- 動機:(遊戲存檔)
- 在不破壞封裝的條件下,將一個對象的狀態捕捉住,並外部化,存儲起來,從而可以在將來合適的時候把這個對象還原到存儲起來的狀態。
- 有時需要記錄對象的內部狀態。
- 當實現檢查點和撤銷機制時,這是必需的,這些機制允許用戶退出臨時操作或從錯誤中恢復。您必須將狀態信息保存在某個地方,以便可以將對象恢復到以前的狀態。例如,撤銷、重做、歷史記錄、快照。
- 但是對象通常封裝了它們的部分或全部狀態,使得其他對象無法訪問它們,並且不可能從外部保存它們。
- 暴露這種狀態會違反封裝,這會損害應用程序的可靠性和可擴展性
- 什麼時候用:
- 必須保存對象狀態的快照,以便稍後將其恢復到該狀態,而獲取該狀態的直接接口將公開實現細節並破壞對象的封裝。
- 結構:
- 動機:(遊戲存檔)
-
- 協作:
- 好處:
- 保證封裝性
- 化簡Originator
- 缺點:
- 代價昂貴
- Hidden costs in caring for mementos.
- 例:
- 協作:
-
- 類圖:
- 類圖: