gpt4 book ai didi

java - 在 Java 中为状态更改实现撤消

转载 作者:行者123 更新时间:2023-11-30 05:56:56 25 4
gpt4 key购买 nike

我开始实现命令模式,希望能得到一个有用的解决方案来解决我提供撤消操作的问题。现在我面临着一个问题:

在涉及操作时实现撤消相当容易:当我将 5 添加到一个数字时,我减去 5。当我将一个对象添加到列表时,我将其删除,依此类推。但是,如果我有一个总状态而不是列表之类的东西怎么办?

一个例子:我在一个类中建模有关线程的信息:

public class ThreadInfo implements Comparable<ThreadInfo> {

final int id;
String name;
int priority;
String state;
int waitCount;
// ...
}

某些信息不会改变,例如id。撤消 waitCount 如上所述很容易,只需减去即可。但是 prioritystate 呢?目前尚不清楚如何撤消这些信息。

我想到的唯一想法是:在初始化命令对象时,将旧状态保留在它的对象中:通过将相关数据传递到构造函数中:

public MyCommand(int priority, String state) {
previousPriority = priority;
previousState = state;
}

或者让 ThreadInfo 有一个状态列表和优先级列表,并且作为当前的第一个元素会更好吗?

最佳答案

只需让旧状态保持指挥。例如

 class ChangeFoo {
ChangeFoo (Bar bar, foo newFoo){}
void execute(){
oldFoo = bar.getFoo();
bar.setFoo(newFoo);
}
void undo(){
bar.setFoo(oldFoo);
}
}

关于java - 在 Java 中为状态更改实现撤消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6547243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com