您可以查看petri-net实现,基于微积分的框架(如
Jacob),虚拟机(如
PVM)或状态机实现(如
SCXML),尽管后者正在等待状态更改然后执行某些操作,因此您需要更改控制流入数据流.
如果你想自己实现它,你需要确保将控制权交还给某个运行时控制器,而不是仅仅调用下一个节点,因为这会破坏你的堆栈.此运行时控制器还可以将上下文对象注入活动runnables,这样您就可以在活动之间共享状态.请在下面找到粗略的草图:
interface Activity {
Activity run(SharedContext context);
}
class A implements Activity {
public Activity run(SharedContext context) {
doA(context);
return new B();
}
}
class B implements Activity {
public Activity run(SharedContext context) {
doB(context);
return new C();
}
}
// runtime controller
SharedContext context = new SharedContext();
Activity next = new A();
while (next != null) {
next = next.run(context);
}