天天看點

Java設計模式--備忘錄模式備忘錄模式(别名:标記)Memento Pattern(Another Name: Token)類圖模式的結構與使用簡單的例子備忘錄模式的優點适用備忘錄模式的情景下載下傳源碼請到

在不破壞封裝性的前提下,捕捉一個對象的内部狀态,并在該對象之外儲存這個狀态,這樣以後就可将該對象恢複到原先儲存的狀态。

without violating encapsulation, capture and externalize an object original state so that the object can be restored to this state later.

Java設計模式--備忘錄模式備忘錄模式(别名:标記)Memento Pattern(Another Name: Token)類圖模式的結構與使用簡單的例子備忘錄模式的優點适用備忘錄模式的情景下載下傳源碼請到

備忘錄模式的結構中包括三種角色。

+ 原發者(originator):需要在某個時刻儲存其狀态的對象。原發者負責建立備忘錄,比如使用creatememento()方法建立一個備忘錄,然後原發者使用該備忘錄記錄自己的狀态。當原發者需要恢複某個時刻的狀态時,它通過獲得相應備忘錄中的資料來恢複那個時刻的狀态,比如原發者調用restorefrommemento(memento menm)方法,并通過參數mem指定的備忘錄恢複狀态。

+ 備忘錄(memento):負責存儲原發者狀态的對象,建立備忘錄的類和建立原發者的類在同一個包中,該類提供的通路資料的方法都是友好方法,使得隻有和原發者在同一個包中的類的執行個體才可以通路備忘錄中的資料。

+ 負責人(caretaker):負責管理儲存備忘錄的對象。負責人如果不和原發者在同一個包中,就不能對備忘錄中的内容進行修改或讀取。如果需要将備忘錄儲存到磁盤,負責人可以使用對象流将備忘錄寫入檔案。

備忘錄模式使用備忘錄可以把原發者的内部狀态儲存起來,使隻有很“親密的”的對象可以通路備忘錄中的資料。

備忘錄模式強調了類設計單一責任原則,即将狀态的刻畫和儲存分開。

必須儲存一個對象在某一時刻的全部或部分狀态,以便在需要時恢複該對象先前的狀态。

一個對象不想通過提供public權限的,諸如getxxx()的方法讓其他對象得到自己的内部狀态。

注:如果備忘錄需要存儲大量的資料或非常頻繁地建立備忘錄,可能會導緻非常大的存儲開銷。

<a href="https://github.com/androidwolf">mygithub</a>