備忘錄( Memento)模式: 在不破壞封裝性的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài)。這樣以后就可將該對象恢復(fù)到原先保存的狀態(tài)。
適用性:
-
必須保存一個對象在某一個時刻的(部分)狀態(tài), 這樣以后需要時它才能恢復(fù)到先前的狀態(tài)。
- 如果一個用接口來讓其它對象直接得到這些狀態(tài),將會暴露對象的實現(xiàn)細節(jié)并破壞對象的封裝性。
所涉及的角色:
備忘錄角色:將發(fā)起人 (Originator) 的對象內(nèi)部狀態(tài)存儲起來,備忘錄可以根據(jù)發(fā)起人對象的的判斷來決定存儲多少發(fā)起人( Originator )對象的內(nèi)部狀態(tài)。奮忘錄同時可以保護其內(nèi)容不被發(fā)起人 (Originator) 對象之外的任何對象所索。
發(fā)起人 (Originator) 角色:創(chuàng)建一個含有當前的內(nèi)部狀態(tài)的的備忘錄對象 , 使用備忘錄對象存儲內(nèi)部狀態(tài)。
負責人( Caretaker )角色:負責保存?zhèn)渫泴ο螅粰z查備忘錄對象的內(nèi)容。
一個簡單的例子:
備忘錄角色













































































客戶端:























參考資料:《java與模式》
《設(shè)計模式速查找手冊》