我開始實施命令模式,希望能夠爲我提供撤消操作的問題獲得有用的解決方案。現在我面臨着一定的問題:在Java中實現撤消以進行狀態更改
在涉及操作時實現撤消操作相當容易:當我向數字中添加了5時,我減去了5.當我將一個對象添加到列表中時,它等等。但是如果我有一個完整的狀態而不是一個列表呢?
一個例子:ID
public class ThreadInfo implements Comparable<ThreadInfo> {
final int id;
String name;
int priority;
String state;
int waitCount;
// ...
}
的某些信息不改變,比如:我的模型有關的類線程的信息。如上所述,撤消waitCount
很簡單,只需減去。但是priority
或state
呢?目前還不清楚如何撤銷這些信息。
唯一的想法,我想出了:初始化命令對象時,保存在它的對象老態:由相關的數據傳遞到構造函數:
public MyCommand(int priority, String state) {
previousPriority = priority;
previousState = state;
}
或者倒不如讓ThreadInfo
有當前的第一個元素的州和優先級列表?
或者在堆疊上保存一個Collection。 –
@Hovercraft這是我想到的第二種方法! –
@platzhirsch:這一切都取決於你想要多少級別的撤消。 –