每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以在軟體中實現後悔機制的設計模式——備忘錄模式,它是軟體中的「後悔藥」,是軟體中的「月光寶盒」。話不多說,下面就讓我們進入備忘錄模式的學習。
sunny軟體公司欲開發一款可以執行在android平台的觸控式中國象棋軟體,由於考慮到有些使用者是「菜鳥」,經常不小心走錯棋;還有些使用者因為不習慣使用手指在手機螢幕上拖動棋子,常常出現操作失誤,因此該中國象棋軟體要提供「悔棋」功能,使用者走錯棋或操作失誤後可恢復到前乙個步驟。如圖21-1所示:
圖21-1 android版中國象棋軟體介面示意圖
如何實現「悔棋」功能是sunny軟體公司開發人員需要面對的乙個重要問題,「悔棋」就是讓系統恢復到某個歷史狀態,在很多軟體中通常稱之為「撤銷」。下面我們來簡單分析一下撤銷功能的實現原理:
在實現撤銷時,首先必須儲存軟體系統的歷史狀態,當使用者需要取消錯誤操作並且返回到某個歷史狀態時,可以取出事先儲存的歷史狀態來覆蓋當前狀態。如圖21-2所示:
圖21-2撤銷功能示意圖
備忘錄模式正為解決此類撤銷問題而誕生,它為我們的軟體提供了「後悔藥」,通過使用備忘錄模式可以使系統恢復到某一特定的歷史狀態。
】
撤銷功能的實現 備忘錄模式(一)
每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以...
備忘錄模式
備忘錄模式 memento 在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。originator 發起人 負責建立乙個備忘錄memento,用以記錄當前時刻它的內部狀態,並可以使用備忘錄恢復內部狀態。originator可根據需要...
備忘錄模式
先從物件導向的三大特徵之一封裝說起。物件導向的封裝簡單點說就是把狀態 資料 和行為 操作這些資料的方法 放到一起,構成乙個單元,通常叫做類。乙個物件的行為是事先確定好的 靜態 一些指令碼,如果物件的狀態相同,物件看起來就是一樣的。所以當我們需要把乙個物件的某一時刻儲存起來,那麼只需要儲存它在那個時刻...