首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 使用單一物件實作 Undo/Redo (1) — 基本概念與建模步驟

     編輯:關於C語言

簡介

探討三種實作 Undo/Redo 方法:單一物件表示變更、命令模式、備忘錄模式。無通用解法,視應用具體情境。系列文先討論如何建模任意應用,再示範簡單應用實作。

核心思想

應用程式每次操作改變狀態。Undo 需回到前一狀態,Redo 需前進到下一狀態 → **必須在執行時儲存狀態**。三種方法皆維護兩個堆疊:UndoStack(撤銷)、RedoStack(重做)。Undo 彈出 UndoStack 套用狀態並推入 RedoStack;Redo 反之。

單一物件表示變更法

單一操作的變更封裝在一個物件,包含所有操作類型所需屬性,執行特定操作時只使用子集屬性。例:應用程式有「高度變更」與「寬度變更」兩操作,變更物件含 Height, Width 兩屬性,執行高度變更時只設 Height。

建模六步驟

  1. 識別操作/容器/物件:決定哪些操作、哪個容器、哪些物件支援 Undo/Redo。
  2. 識別需保存屬性:每個操作需保存哪些屬性以還原狀態。
  3. 建立 ChangeRepresentationObject + ActionType enum:類別含所有操作屬性,enum 區分操作類型。
  4. 建立 UndoRedo 類別:含兩個 Stack<ChangeRepresentationObject>,實作 IUndoRedo 介面。
  5. 實作 Undo/Redo/InsertObjectForUndoRedo:依 ActionType 執行對應邏輯,堆疊互推。
  6. 整合:每次操作前呼叫 InsertObjectForUndoRedo,UI 按鈕綁定 Undo/Redo。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved