您好,我正在尝试构建将按顺序执行的IAction对象的框架。每个IAction实现都将执行为其实现的processAction()方法。此方法返回一个IAction,在大多数情况下是其自身,但在某些情况下可能是指向List中另一个IAction的指针。创建了IActionIterator接口来管理列表中的移动。
 这是界面



public interface IAction {
    public IAction processAction();
}

pulbic interface IActionIterator {
    public IAction getFirstAction();
    public IAction getNextAction( IAction action );
}


我的框架将获得一个List,并将遍历该列表,执行每个IAction类的processAction()。这是循环的样子



  IActionIterator  iter = ... // created some how
  IAction action = iter.getFirstAction();
  do {
       IAction newAction = action.processAction();
       if( action.equals( newAction )
           action = iter.getNextAction( action );
       else
           action = newAction;

  while( action != null  )  {



因此,每个IAction都有其要执行的实现,并且某些IAction具有业务逻辑,这些逻辑将在列表中返回一个IAction而不是执行列表中的下一个IAction。

我预计将要执行一些IAction类,但是列表中的下一个IAction将需要第一个的结果。例如,一个IAction正在执行SQL查询,并且结果与列表中的下一个IAction相关。

所以我的问题是,在设计的框架中,我该如何或应该以从IAction到IAction的信息传递方式来实现此目的?

最佳答案

听起来您正在尝试表示状态转换图。您可以使用FSM而不是尝试自己滚动吗?

10-08 13:09