我最近看到一个软件,它的运行机制很灵活,我很喜欢,但是不知道怎样实现。
它的运行机制是这样的:
它的很多功能模块,可以视为一个个的命令
比如 Command_A,Command_B,Command_C,Command_D ......Command_Z 。每个命令完成不同的功能,而且有不同的参数。
可以将这些命令任意组合成不同的流程,我们可以称之为子流程,
比如 SUB1 ,由 Command_A,Command_B,Command_C 组成;
比如 SUB2 ,由 Command_A,Command_D,Command_B 组成;
比如 SUB3 ,由 Command_B,Command_D 组成;
主流程,MainProcess,由任意的命令和子流程组成。比如
MainProcess
{
1、Command_A
2、SUB1
3、SUB1
4、SUB2
5、Command_C
6、Command_C
}
注意:
第2步的 SUB1,和第4步的 SUB1,它们所含相同命令的参数值是独立的;
第5步的 Command_C,和第6步的 Command_C,它们的参数值是独立的;
即每条命令的参数都是独立的。
软件运行时,按照以下规则运行主流程
1、分为“批处理”模式,和“单命令”模式;
2、“单命令”模式,就是按照顺序执行主流程里的命令和子流程。以上面的主流程为例,执行顺序为:
1、Command_A
2、SUB1里的Command_A
2、SUB1里的Command_B
2、SUB1里的Command_C
3、SUB1里的Command_A
3、SUB1里的Command_B
3、SUB1里的Command_C
4、SUB2里的Command_A
4、SUB2里的Command_D
4、SUB2里的Command_B
5、Command_C
6、Command_C
3、“批处理”模式,就是按照主流程里,如果有连续的相同的子流程,则会顺序执行这些相同的子流程中相同的命令。以上面的主流程为例,执行顺序为:
1、Command_A
2、SUB1里的Command_A
3、SUB1里的Command_A
2、SUB1里的Command_B
3、SUB1里的Command_B
2、SUB1里的Command_C
3、SUB1里的Command_C
4、SUB2里的Command_A
4、SUB2里的Command_D
4、SUB2里的Command_B
5、Command_C
6、Command_C
我试着写这种运行机制的程序,但是不知道如何定义子流程和主流程的结构,感觉很困难,不知道如何着手。
特别是
1、因为子流程或者主流程是由不同命令组成,难道把所有命令的参数都定义到子流程、主流程的结构中?那样,如果参数很多时,这个结构就很大,会不会造成需要很多内存分配;
2、如何实现主流程,按照“批处理”模式,和“单命令”模式来运行。
大家有没有好的建议,欢迎在这里讨论。谢谢!