軟體設計模式學習(二十二)備忘錄模式
阿新 • • 發佈:2020-05-28
> 備忘錄模式提供了一種物件狀態的撤銷實現機制,當系統中某一物件需要恢復到某一歷史狀態時可以使用備忘錄模式來進行設計
## 模式動機 人人都有後悔的時候,在軟體使用過程中難免會出現一些誤操作,如不小心刪除了某些文字或圖片,資料填入錯誤等,對於這些誤操作,需要提供一種後悔藥機制,讓系統可以回到誤操作前的狀態,這就是備忘錄模式的模式動機
## 模式定義 在不破壞封裝的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態,這樣可以在以後將物件恢復到原先儲存的狀態。備忘錄模式是一種物件行為型模式,其別名為 Token
## 模式結構 ![](https://img2020.cnblogs.com/blog/1759254/202005/1759254-20200528114006316-1898968070.png) 1. Originator(原發器) 原發器可以建立一個備忘錄,並存儲它的當前內部狀態,也可以使用備忘錄來恢復其內部狀態。一般將需要儲存內部狀態的類設計為原發器。 2. Memento(備忘錄) 儲存原發器的內部狀態,根據原發器來決定儲存哪些內部狀態。需要注意的是,除了原發器本身與負責人之外,備忘錄物件不能直接供其他類使用。 3. Caretaker(負責人) 負責人又稱管理者,它負責儲存備忘錄,但是不能對備忘錄的內容進行操作或檢查。
## 模式適用環境 在以下情況可以使用備忘錄模式: - 儲存一個物件在某一時刻的狀態或部分狀態 - 如果用一個介面來讓其他物件得到這些狀態,將會暴露物件的實現細節並破壞封裝性,一個物件不希望外界直接訪問得到其內部狀態,通過負責人可以間接訪問其內部狀