1. 程式人生 > >撤銷功能的實現——備忘錄模式(一)

撤銷功能的實現——備忘錄模式(一)

      每個人都有過後悔的時候,但人生並無後悔藥,有些錯誤一旦發生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不後悔,凡事我們都需要三思而後行。說了這麼多,大家可能已經暈了,不是在學設計模式嗎?為什麼弄出這麼一堆人生感悟來,呵呵,彆著急,本章將介紹一種讓我們可以在軟體中實現後悔機制的設計模式——備忘錄模式,它是軟體中的“後悔藥”,是軟體中的“月光寶盒”。話不多說,下面就讓我們進入備忘錄模式的學習。

21.1 可悔棋的中國象棋

       Sunny軟體公司欲開發一款可以執行在Android平臺的觸控式中國象棋軟體,由於考慮到有些使用者是“菜鳥”,經常不小心走錯棋;還有些使用者因為不習慣使用手指在手機螢幕上拖動棋子,常常出現操作失誤,因此該中國象棋軟體要提供“悔棋”功能,使用者走錯棋或操作失誤後可恢復到前一個步驟。如圖21-1

所示:

21-1  Android版中國象棋軟體介面示意圖

      如何實現“悔棋”功能是Sunny軟體公司開發人員需要面對的一個重要問題,“悔棋”就是讓系統恢復到某個歷史狀態,在很多軟體中通常稱之為“撤銷”。下面我們來簡單分析一下撤銷功能的實現原理:

      在實現撤銷時,首先必須儲存軟體系統的歷史狀態,當用戶需要取消錯誤操作並且返回到某個歷史狀態時,可以取出事先儲存的歷史狀態來覆蓋當前狀態。如圖21-2所示:

21-2撤銷功能示意圖

      備忘錄模式正為解決此類撤銷問題而誕生,它為我們的軟體提供了“後悔藥”,通過使用備忘錄模式可以使系統恢復到某一特定的歷史狀態。