Memento(備忘錄) 物件行為模式

2021-05-23 23:47:59 字數 596 閱讀 2439

意圖:在不破壞封裝的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

單就實現儲存乙個物件在某一時刻的狀態的功能,還是很簡單的——將物件中要儲存的屬性放到乙個專門管理備份列表的的物件中,需要的時候則調從備份的列表中將該物件的屬性放回去。但是為了能讓你的備份物件訪問到原物件中的屬性,是否意味著你就要全部公開或者部分公開物件原本私有的屬性呢?如果你的做法已經破壞了封裝,那麼就要考慮重構一下了。

備忘錄模式的組成部分:

(1)備忘錄(memento)角色:備忘錄角色儲存「備忘發起角色」的內部狀態。「備忘發起角色」根據需要決定備忘錄角色儲存「備忘發起角色」的哪些內部狀態。為了防止「備忘發起角色」以外的其他物件訪問備忘錄。備忘錄實際上有兩個介面,「備忘錄管理者角色」只能看到備忘錄提供的窄介面——備忘錄角色中存放的屬性對它來講是不可見的。「備忘發起角色」則能夠看到乙個寬介面——能夠看到自己放入備忘錄角色中屬性。

(2)備忘發起(originator)角色:「備忘發起角色」建立乙個備忘錄,用以記錄當前時刻它的內部狀態。在需要時使用備忘錄恢復內部狀態。

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

備忘錄模式(Memento) 行為筆記

備忘錄 memento 物件 乙個用來儲存另外乙個物件內部狀態 資訊 的快照的物件 用意 在不破壞 封裝 的條件下,捕捉乙個物件的狀態 資訊 並外部化儲存起來,從而可以在將來合適的時候把物件還原到儲存起來的狀態。一 涉及角色 a 發起人 originator 建立乙個含有當前的內部 資訊 狀態 的備...

Memento備忘錄模式(行為型模式)

物件狀態的回溯 物件狀態的變化無端,如何回溯 恢復物件在某個點的狀態?動機在軟體構建過程中,某些物件的狀態在轉換過程中,可能由於某種需要,需求程式能夠回溯到物件之前處於某個點時的狀態。如果使用一些公有介面來讓其他物件得到物件的狀態,便會暴露物件的細節實現。如何實現物件狀態的良好儲存與恢復?但同時又不...

備忘錄模式(Memento)

主要目的是儲存乙個物件的某個狀態,以便在適當的時候恢復物件,個人覺得叫備份模式更形象些,通俗的講下 假設有原始類a,a中有各種屬性,a可以決定需要備份的屬性,備忘錄類b是用來儲存a的一些內部狀態,類c呢,就是乙個用來儲存備忘錄的,且只能儲存,不能修改等操作。做個圖來分析一下 original類是原始...