1. 程式人生 > >(行為模式)MEMENTO——備忘錄模式

(行為模式)MEMENTO——備忘錄模式

1、意圖

在不破壞封裝的條件下,將一個物件的狀態捉住,並在該物件外部儲存這個狀態,從而可以在將來合適的時候把這個物件還原到儲存起來的狀態。

2、核心思想

     備忘錄物件是一個用來儲存另外一個物件內部狀態的快照的物件。

3、優缺點分析

適用於功能比較複雜的,但需要記錄或維護屬性歷史的類;或者需要儲存的屬性只是眾多屬性中的一小部分時Originator可以根據儲存的Memo還原到前一狀態。

4、標準UML圖

clip_image002

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

Memento(備忘錄):負責儲存Originator物件的內部狀態,並可防止Originator以外的其他物件訪問備忘錄Memento。

備忘錄有兩個介面,Caretaker只能看到備忘錄的窄介面(把對外的介面作為private成員,而把需要訪問這些介面函式的類作為這個類的友元類),它只能將備忘錄傳遞給其他物件。Originator能夠看到一個寬介面(把對外的介面作為public成員),允許它訪問返回到先前狀態所需的所有資料。

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