物件狀態的回溯
物件狀態的變化無端,如何回溯/恢復物件在某個點的狀態?
動機在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,需求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公有介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。
如何實現物件狀態的良好儲存與恢復?但同時又不會因此而破壞物件本身的封裝性。
意圖在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原先儲存的狀態。
memento模式的要點
備忘錄memento儲存原發器originator物件的內部狀態,在需要時恢復原發器狀態。
memento模式適用於由原發器管理,卻又必須儲存在原發器之外的資訊。
在實現memento模式中,要防止原發器以外的物件訪問備忘錄物件。備忘錄以象有兩個介面,乙個為原發器使用的寬介面;乙個為其他物件使用的窄介面。
在實現memento模式時,要考慮拷貝物件狀態的效率問題,如果物件開銷比較大,可以採用某種增量式改變來改進memento模式。
加上序列化[seriable]標籤就可以實現memento的效果,儲存和恢復物件的狀態。並且可以備忘到除記憶體之外的資料庫,或程序外的地方。
Memento(備忘錄) 物件行為模式
意圖 在不破壞封裝的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。單就實現儲存乙個物件在某一時刻的狀態的功能,還是很簡單的 將物件中要儲存的屬性放到乙個專門管理備份列表的的物件中,需要的時候則調從備份的列表中將該物件的屬性放回去。但是為了能讓你...
備忘錄模式(Memento) 行為筆記
備忘錄 memento 物件 乙個用來儲存另外乙個物件內部狀態 資訊 的快照的物件 用意 在不破壞 封裝 的條件下,捕捉乙個物件的狀態 資訊 並外部化儲存起來,從而可以在將來合適的時候把物件還原到儲存起來的狀態。一 涉及角色 a 發起人 originator 建立乙個含有當前的內部 資訊 狀態 的備...
備忘錄模式 行為型
3 相關模式 1 備忘錄模式和命令模式 這兩個模式可以組合使用。命令模式實現中,在實現命令的撤銷和重做的時候,可以使用備忘錄模式,在命令操作的時候記錄下操作前後的狀態,然後在命令撇銷和重做的時候,直接使用相應的備忘錄物件來恢復狀態就可以了在這種撤銷的執行順序和重做的執行順序可控的情況下,備忘錄物件還...