天天看點

Head First設計模式之備忘錄模式

不破壞封裝性的前提下,捕獲一個對象的内部狀态,并在該對象之外儲存這個狀态。這樣就可以将該對象恢複到原先儲存的狀态

Head First設計模式之備忘錄模式

  備忘錄模式中主要有三類角色:

發起人角色:記錄目前時刻的内部狀态,負責建立和恢複備忘錄資料。

備忘錄角色:負責存儲發起人對象的内部狀态,在進行恢複時提供給發起人需要的狀态。

管理者角色:負責儲存備忘錄對象,但是不能對備忘錄對象的内容進行操作或檢查。

1、需要儲存/恢複資料的相關狀态場景。

2、提供一個可復原的操作。

優點: 

1、給使用者提供了一種可以恢複狀态的機制,可以使使用者能夠比較友善地回到某個曆史的狀态。

2、實作了資訊的封裝,使得使用者不需要關心狀态的儲存細節。

缺點:

消耗資源。

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

2、由于備份的資訊是由發起人自己提供的,是以管理者無法預知備份的資訊的大小,存在一定的未知風險。

下面以備份手機通訊錄為例子來實作了備忘錄模式,具體的實作代碼如下所示:

參考

http://www.cnblogs.com/JsonShare/p/7283972.html

http://www.runoob.com/design-pattern/memento-pattern.html

http://www.cnblogs.com/zhili/p/MementoPattern.html

繼續閱讀