鍍金池/ 教程/ Java/ 撤銷功能的實現(xiàn)——備忘錄模式(一)
請求發(fā)送者與接收者解耦——命令模式(四)
對象間的聯(lián)動——觀察者模式(三)
算法的封裝與切換——策略模式(三)
請求發(fā)送者與接收者解耦——命令模式(三)
遍歷聚合對象中的元素——迭代器模式(四)
請求的鏈?zhǔn)教幚怼氊?zé)鏈模式(二)
自定義語言的實現(xiàn)——解釋器模式(五)
操作復(fù)雜對象結(jié)構(gòu)——訪問者模式(一)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(一)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(三)
操作復(fù)雜對象結(jié)構(gòu)——訪問者模式(二)
協(xié)調(diào)多個對象之間的交互——中介者模式(二)
算法的封裝與切換——策略模式(四)
請求發(fā)送者與接收者解耦——命令模式(六)
撤銷功能的實現(xiàn)——備忘錄模式(二)
算法的封裝與切換——策略模式(一)
遍歷聚合對象中的元素——迭代器模式(五)
模板方法模式深度解析(三)
協(xié)調(diào)多個對象之間的交互——中介者模式(五)
自定義語言的實現(xiàn)——解釋器模式(三)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(六)
遍歷聚合對象中的元素——迭代器模式(三)
操作復(fù)雜對象結(jié)構(gòu)——訪問者模式(四)
遍歷聚合對象中的元素——迭代器模式(一)
算法的封裝與切換——策略模式(二)
請求的鏈?zhǔn)教幚怼氊?zé)鏈模式(一)
遍歷聚合對象中的元素——迭代器模式(二)
操作復(fù)雜對象結(jié)構(gòu)——訪問者模式(三)
對象間的聯(lián)動——觀察者模式(六)
對象間的聯(lián)動——觀察者模式(五)
請求發(fā)送者與接收者解耦——命令模式(一)
自定義語言的實現(xiàn)——解釋器模式(六)
自定義語言的實現(xiàn)——解釋器模式(一)
模板方法模式深度解析(一)
撤銷功能的實現(xiàn)——備忘錄模式(一)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(五)
請求的鏈?zhǔn)教幚怼氊?zé)鏈模式(三)
遍歷聚合對象中的元素——迭代器模式(六)
撤銷功能的實現(xiàn)——備忘錄模式(三)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(四)
處理對象的多種狀態(tài)及其相互轉(zhuǎn)換——狀態(tài)模式(二)
協(xié)調(diào)多個對象之間的交互——中介者模式(四)
對象間的聯(lián)動——觀察者模式(二)
請求發(fā)送者與接收者解耦——命令模式(二)
自定義語言的實現(xiàn)——解釋器模式(四)
對象間的聯(lián)動——觀察者模式(四)
撤銷功能的實現(xiàn)——備忘錄模式(五)
自定義語言的實現(xiàn)——解釋器模式(二)
協(xié)調(diào)多個對象之間的交互——中介者模式(三)
協(xié)調(diào)多個對象之間的交互——中介者模式(一)
撤銷功能的實現(xiàn)——備忘錄模式(四)
模板方法模式深度解析(二)
撤銷功能的實現(xiàn)——備忘錄模式(五)
請求發(fā)送者與接收者解耦——命令模式(五)
請求的鏈?zhǔn)教幚怼氊?zé)鏈模式(四)

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

每個人都有過后悔的時候,但人生并無后悔藥,有些錯誤一旦發(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),當(dāng)用戶需要取消錯誤操作并且返回到某個歷史狀態(tài)時,可以取出事先保存的歷史狀態(tài)來覆蓋當(dāng)前狀態(tài)。如圖所示:

http://wiki.jikexueyuan.com/project/design-pattern-behavior/images/1335891078_9117.jpg" alt="撤銷功能示意圖" />

備忘錄模式正為解決此類撤銷問題而誕生,它為我們的軟件提供了“后悔藥”,通過使用備忘錄模式可以使系統(tǒng)恢復(fù)到某一特定的歷史狀態(tài)。