設計模式(15) 備忘錄模式

2021-10-01 08:45:05 字數 1160 閱讀 6787

本章節我們來聊一聊備忘錄模式,備忘二字應該好理解吧,什麼是備忘呢?我的理解是這樣的:就是說早在做一件事情之前,我需要對某些資源進行備份,以便於在出現失敗後恢復到處理之前的狀態。跟mysql事務實現邏輯差不多喲,在改資料之前先將原來的資料寫入日誌,如果修改失敗,將日誌的資料回滾到庫。

備忘錄模式呢也是來幹這個事情的,我們先看看備忘錄模式的定義:備忘錄模式(memento pattern)提供了一種彌補真實世界缺陷的方法,讓「後悔藥」在程式的世界中真實 可行,其定義如下:在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以 後就可將該物件恢復到原先儲存的狀態,通俗地說,備忘錄模式就是乙個物件的備份模式,提供了一種程式資料的備份方法。

我們看看備忘錄模式的通用類圖:

● originator發起人角色 記錄當前時刻的內部狀態,負責定義哪些屬於備份範圍的狀態,負責建立和恢復備忘錄資料。

● memento備忘錄角色 負責儲存originator發起人物件的內部狀態,在需要的時候提供發起人需要的內部狀態。

● caretaker備忘錄管理員角色 對備忘錄進行管理、儲存和提供備忘錄。

**結構如下:

總結:備忘錄模式比較簡單,使用場景比較少,我們就不深入研究了,如果在開中遇到了,只需要根據上面說的做一下擴充套件就行,擴充套件也不難,根據自己需求就行。

設計模式 備忘錄模式

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

設計模式 備忘錄模式

備忘錄模式 memento pattern 在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。涉及角色 1.original 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻自身的內部狀態,並可使用備忘錄恢復內部狀態。ori...

設計模式 備忘錄模式

備忘錄模式是一種行為模式,該模式業內關於儲存物件當前狀態,並且之後可以再次恢復到此狀態。備忘錄模式實現的方式需要保證被儲存的物件狀態不能被物件從外部訪問,目的是為了保護好被儲存的這些物件狀態的完整性以及內部實現不向外暴露。在不破壞封閉的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態,這樣...