2010-11-06 55 views
0

我正在使用BST(二叉搜索樹)構建數據庫,我希望用戶能夠回滾最後5條命令。有什麼建議麼?我正在使用Java。ROLLBACK undo redo

+0

樹有多大?如果它足夠小,您可以保留最近5次操作的副本。 – leonm 2010-11-06 22:27:43

+0

不是很大。我將如何處理經緯度5操作? – user475529 2010-11-06 22:48:30

+0

@ user475529:不要保留最近五次操作,每次操作後複製整個樹並保留最近五次操作。 – 2010-11-07 00:02:46

回答

0

這聽起來像你想Memento pattern。實質上,您創建一個對象,其中包含以下所需的所有信息:

  1. 從操作之前的樹狀態開始,重複該操作。 (重做)
  2. 從操作後的樹狀態恢復操作。 (撤消)

你會保留最後五個。當用戶請求撤消時,請採取最新措施,讓其恢復操作,然後以某種方式(例如,某些索引變量)指示您在紀念品列表中的位置。然後,您應該能夠在任一方向移動列表,儘可能多地撤消和重做。

+0

我想着插入我的樹到一個堆棧彈出它時,用戶調用撤消?這是可能的嗎?/ – user475529 2010-11-09 06:50:41

+0

你當然可以這樣做,但使用紀念品可以節省大量空間,同時仍然允許撤銷/重做功能。 – cdhowie 2010-11-09 06:52:32