每個人都有過后悔的時候,但人生并無后悔藥,有些錯誤一旦發(fā)生就無法再挽回,有些人一旦錯過就不會再回來,有些話一旦說出口就不可能再收回,這就是人生。為了不后悔,凡事我們都需要三思而后行。說了這么多,大家可能已經(jīng)暈了,不是在學(xué)設(shè)計模式嗎?為什么弄出這么一堆人生感悟來,呵呵,別著急,本章將介紹一種讓我們可以在軟件中實現(xiàn)后悔機制的設(shè)計模式——備忘錄模式,它是軟件中的“后悔藥”,是軟件中的“月光寶盒”。話不多說,下面就讓我們進入備忘錄模式的學(xué)習(xí)。
Sunny 軟件公司欲開發(fā)一款可以運行在 Android 平臺的觸摸式中國象棋軟件,由于考慮到有些用戶是“菜鳥”,經(jīng)常不小心走錯棋;還有些用戶因為不習(xí)慣使用手指在手機屏幕上拖動棋子,常常出現(xiàn)操作失誤,因此該中國象棋軟件要提供“悔棋”功能,用戶走錯棋或操作失誤后可恢復(fù)到前一個步驟。如圖所示:
http://wiki.jikexueyuan.com/project/design-pattern-behavior/images/1335891072_4788.jpg" alt="Android版中國象棋軟件界面示意圖" />
如何實現(xiàn)“悔棋”功能是 Sunny 軟件公司開發(fā)人員需要面對的一個重要問題,“悔棋”就是讓系統(tǒng)恢復(fù)到某個歷史狀態(tài),在很多軟件中通常稱之為“撤銷”。下面我們來簡單分析一下撤銷功能的實現(xiàn)原理:
在實現(xiàn)撤銷時,首先必須保存軟件系統(tǒng)的歷史狀態(tài),當用戶需要取消錯誤操作并且返回到某個歷史狀態(tài)時,可以取出事先保存的歷史狀態(tài)來覆蓋當前狀態(tài)。如圖所示:
http://wiki.jikexueyuan.com/project/design-pattern-behavior/images/1335891078_9117.jpg" alt="撤銷功能示意圖" />
備忘錄模式正為解決此類撤銷問題而誕生,它為我們的軟件提供了“后悔藥”,通過使用備忘錄模式可以使系統(tǒng)恢復(fù)到某一特定的歷史狀態(tài)。