探討三種實作 Undo/Redo 方法:單一物件表示變更、命令模式、備忘錄模式。無通用解法,視應用具體情境。系列文先討論如何建模任意應用,再示範簡單應用實作。
應用程式每次操作改變狀態。Undo 需回到前一狀態,Redo 需前進到下一狀態 → **必須在執行時儲存狀態**。三種方法皆維護兩個堆疊:UndoStack(撤銷)、RedoStack(重做)。Undo 彈出 UndoStack 套用狀態並推入 RedoStack;Redo 反之。
單一操作的變更封裝在一個物件,包含所有操作類型所需屬性,執行特定操作時只使用子集屬性。例:應用程式有「高度變更」與「寬度變更」兩操作,變更物件含 Height, Width 兩屬性,執行高度變更時只設 Height。
Stack<ChangeRepresentationObject>,實作 IUndoRedo 介面。InsertObjectForUndoRedo,UI 按鈕綁定 Undo/Redo。