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

備忘錄模式中主要有三類角色:
發起人角色:記錄目前時刻的内部狀态,負責建立和恢複備忘錄資料。
備忘錄角色:負責存儲發起人對象的内部狀态,在進行恢複時提供給發起人需要的狀态。
管理者角色:負責儲存備忘錄對象,但是不能對備忘錄對象的内容進行操作或檢查。
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