設計模式學習 備忘錄模式

2021-07-11 20:14:16 字數 860 閱讀 5835

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

originator:發起人,負責建立乙個備忘錄memento,用以記錄當前時刻他的內部狀態,並可使用備忘錄恢復內部狀態, originator可根據需要覺得memento儲存originator的那些內部狀態

memento:備忘錄,負責儲存originator物件的內部狀態,並可防止originator以為的其他物件訪問備忘錄memento.備忘錄有兩個介面,caretaker只能看到備忘錄的窄介面,他只能將備忘錄傳遞給其他物件,originator能夠看到乙個寬介面,允許他訪問返回到先前狀態所需的所有操作

caretaker:管理者,複雜儲存好備忘錄memento,不能對備忘錄的內容進行操作或檢查

備忘錄模式是一種行為模式,該模式用於儲存物件當前狀態,並且在之後可以再次恢復到此狀態,備忘錄模式實現的方式需要保證被儲存的物件狀態不能被物件從外部訪問,目的是為了保護好唄儲存的這些物件狀態的完整性以及內部實現不向外暴漏

使用場景:需要儲存乙個物件在某乙個時刻的狀態或部分狀態;  如果用乙個介面來讓其他物件得到這些狀態,將會暴漏物件的實現細節並破壞物件的封裝性,乙個物件不希望外界直接訪問其內部狀態,通過中間物件可以間接訪問其內部狀態

備忘錄模式是在不破壞封裝的條件下,通過備忘錄物件儲存另外乙個物件內部狀態的快照,在將來合適的時候吧這個物件還原到儲存起來的狀態

優點:給使用者提供可一種可以恢復狀態的機制,可以使使用者比較方便的回到某個歷史的狀態

實現了資訊的封裝,使得使用者不需要關係狀態的儲存細節

確定:消耗資源,如果類的成員變數過多,勢必會占用比較大的資源,而且每一次儲存都會消耗一定的記憶體.

設計模式學習 備忘錄模式

備忘錄模式,在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。把要儲存的細節給封裝在了memento中了,哪一天要更改儲存的細節也不用影響客戶端了。應用 memento模式比較適用於功能比較複雜的,但需要維護或記錄屬性歷史的類,或者...

學習設計模式 備忘錄模式

說明 定義 在不破壞封裝性的前提下,捕獲乙個物件內部狀態,並在物件之外儲存這個狀態。這樣以後就可以將該物件恢復到原來的模樣。需求 購買商品時,儲存商品購買時的資訊,以便使用者可以通過快照功能檢視商品以前的資訊。解決方式 a.定義乙個備忘錄類 商品資訊 b.定義乙個備忘錄管理類,用於儲存備忘錄當前狀態...

設計模式 備忘錄模式

錄入大批人員資料。正在錄入當前人資料時,發現上乙個人的資料錄錯了,此時需要恢復上乙個人的資料,再進行修改。word文件編輯時,突然電腦宕機或者斷電,再開啟時,可以看到word提示你恢復以前的文件。就死儲存某個物件內部狀態的拷貝,這樣以後就可以將該物件恢復到原先的狀態。源髮器類originator 備...