请教,程序中工作流程的控制管理
请教以下的情况,可以使用什么样的实现方法,主要是程序中任务流程的控制
1.整个任务含有几个单独的任务A,B,C,
每个单独的任务中可能会再分为几个阶段的子任务,如A分为A1,A2,A3
2.任务的执行受到用户设置的影响,这表现为某种设置下可能只执行A,另外一种设置循环执行A,B,另一种设置循环执行A,C
当然,每次运行的时候,用户的设置就已经是确定的了.
3.(头疼的地方)在执行某个子任务的时候如A2,根据当时的执行情况,在不同的用户设置下,有时需要结束当前任务,转到不同的任务中去
如转到A,或者转到B
4.未来可能会添加新的单独的任务,由此会带来任务流程新的变化
5.以上各个任务,或者任务阶段的代码段式分布在各处的,也就是说不会在同一个函数内
想用一个类来管理这些流程,如:
enum TaskType {e_A, e_B};
class TaskControl {
public:
void ChangeTask(int StateMark); //设定工作类型
TaskType GetTask(); //获得下一个阶段的工作类型
public:
TaskControl();
private:
static TaskType m_TaskType;
};
但总感觉这种方法比较笨拙,请教有没有好的方法或者建议?
[解决办法]
这个我感觉应该用继承来做,首先你的子任务应该继承父任务,如A1,A2,A3都继承于A,这样一来你执行A1的时候就知道了是触发了A类下面的子类。
Class A{
public:
void ChangeTask(int StateMark); //设定工作类型
TaskType GetTask(); //获得下一个阶段的工作类型
}
Class A1:A
{
public:
。。。
}
这样一来A1就拥有了A的所有方法,并且可以有自己的执行方法,你可以在A1的构造里面执行某项操作,这样就比较好控制了。
我以前做C#项目的时候,整个工程先定义一个类叫BaseObject,然后整个网站或者应用程序都从这里继承而来,项目的管理变得非常轻松