我开始实现命令模式,希望能找到一个有用的解决方案来解决我提供撤消操作的问题。现在我面临一个问题:
在涉及操作时实现撤消相当容易:当我将 5 添加到一个数字时,我会减去 5。当我将一个对象添加到列表中时,我将其删除,等等。但是,如果我有一个完整的状态而不是列表之类的东西怎么办?
一个例子:我为一个类中的一个线程的信息建模:
public class ThreadInfo implements Comparable<ThreadInfo> {
final int id;
String name;
int priority;
String state;
int waitCount;
// ...
}
某些信息不会改变,例如 id。waitCount
如上所述,撤消很容易,只需减去即可。但是priority
orstate
呢?目前尚不清楚如何撤消这些信息。
我想出的唯一想法:初始化命令对象时,保留其对象中的旧状态:通过将相关数据传递给构造函数:
public MyCommand(int priority, String state) {
previousPriority = priority;
previousState = state;
}
ThreadInfo
还是让一个状态和优先级列表成为当前的第一个元素会更好吗?