是否有一种轻量级的模式来取消长时间运行的方法,所以将替换如下代码:
public void longComputations() {
... first step...
if ( cancelled ) {
rollbackWork();
return;
}
... second step...
if ( cancelled ) {
rollbackWork();
return;
}
... third step...
if ( cancelled ) {
rollbackWork();
return;
}
}
我知道我可以创建一个Task类,将步骤细分为任务对象,创建一个队列,然后通过取消检查一步一步地执行任务,但是我只是想知道是否有任何简单的代码结构模式可以解决这种情况。
最佳答案
我不知道这种机制。由于您必须跟踪工作才能执行rollbackWork()
,因此,如果您想进一步发展这种逻辑,那么精心设计的面向对象解决方案就是您的最佳选择!通常,可以使用command pattern实现这种情况,我仍然发现它很轻巧:
// Task or Command
public interface Command {
void redo();
void undo();
}
然后,调度程序或队列可以负责执行此类任务/命令实现,并按顺序回滚它们。