1. 程式人生 > >大戰設計模式【22】—— 備忘錄模式

大戰設計模式【22】—— 備忘錄模式

bsp 器) tle 對象狀態 實現機制 責任 破壞 部分 get

備忘錄模式(Memento)

設計模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

一、定義

在不破壞封裝的前提下,捕獲一個對象的內部狀態,並在該對象之外保存這個狀態,這樣可以在以後將對象恢復到原先保存的狀態

二、結構

Originator(原發器):它是一個普通類,可以創建一個備忘錄,並存儲其當前內部狀態,也可以使用備忘錄來恢復其內部狀態,一般需要保存內部狀態的類設計為原發器。

Memento(備忘錄):存儲原發器的狀態,根據原發器來決定保存哪些內部狀態。

Caretaker(負責任):負責任又稱為管理者,它負責保存備忘錄,但是不能對備忘錄的內容進行操作或檢查。

三、優點

提供了一種狀態恢復的實現機制,使得用戶可以方便地回到一個特定的歷史步驟。

實現了對信息的封裝,一個備忘錄對象是一種原發器對象狀態的表示,不會被其他代碼所改動。

四、缺點

資源消耗過大,每保存一次對象狀態都需要消耗一定系統資源。

五、應用場景

需要保存一個對象在某一個時刻的全部狀態或部分狀態狀態,以便需要在後面需要時可以恢復到先前的狀態。

防止外界對象破壞一個對象歷史狀態的封裝性,避免將對象歷史狀態的實現細節暴露給外界對象。

六、個人總結

1、備忘錄模式的功能可謂是非常的專一的,就是用來記錄歷史狀態的

2、當我們需要記錄歷史狀態,並需要返回這個歷史狀態的時候可以使用

3、當然這個模式重點就在歷史狀態的存儲方式上面了,你可以使用你所需需要的數據結構進行存儲

也可以控制存儲的容量或者是存儲的方式等等

參考博客:http://www.cnblogs.com/edisonchou/p/7414631.html

大戰設計模式【22】—— 備忘錄模式