Board logo

标题: 码农求助,要做一个用户自定义执行顺序的功能,应该怎么实现?? [打印本页]

作者: waterking    时间: 2013-12-14 01:50     标题: 码农求助,要做一个用户自定义执行顺序的功能,应该怎么实现??

posted by wap, platform: iPhone

求思路…
比如我有10个独立功能,分别是a,b,c,d…这些是固定不变的。

如果是固定顺序执行,就写好代码一个个调用完事了。

但是现在需要按用户自行规定的顺序执行,比如bcad…有些功能可能会被执行多次,比如daac…这种…

这个功能应该如何实现??总不能一堆if else吧…
求思路…
作者: squallssck    时间: 2013-12-14 03:24

posted by wap, platform: iPhone

做个gui,按顺序点选
作者: aqi    时间: 2013-12-14 03:30

10个功能看看能否封装成调用接口类似的东东,在形式上无论是函数指针,还是采用面向对象的虚函数,甚至是functor这样的高级技能,思路上都差不多。然后搞10个ID(ID类型可以是字符串或者数字也都ok),用map建立起对应关系。

然后想办法让用户自定义id的输入组合序列,你读入后,查表执行就行了。。。
作者: iceliking    时间: 2013-12-14 06:40

posted by wap, platform: iPhone

封装成命令,让用户自己配置调用顺序
作者: Lucifer6E    时间: 2013-12-14 08:55

啥程序啊,控制台的吗
套个循环,执行完一个功能就返回让用户选下一个
作者: waterking    时间: 2013-12-14 11:55

posted by wap, platform: iPhone
引用:
原帖由 @Lucifer6E  于 2013-12-14 08:55 发表
啥程序啊,控制台的吗
套个循环,执行完一个功能就返回让用户选下一个
matlab,C++(mfc)

不是每次执行完一个再选下一个。
是一次配置,连续执行,可以长时间无人值守。。
作者: zhangu2    时间: 2013-12-14 13:28

不就一个配置文件搞定的事儿么。。。
最多给用户写个简单GUI程序管理配置。。。

作者: waterking    时间: 2013-12-14 13:33

posted by wap, platform: iPhone

一觉醒来好像有点思路了,感谢大家帮助,激骚回头补上!!
作者: nintenyun    时间: 2013-12-14 13:36

来tg数码区问编程问题。。喷了
出门左转 stackoverflow.com
作者: singlung    时间: 2013-12-14 13:37

posted by wap, platform: iPhone

楼主 封装成方法每个方法取个名字。再建一个mapping表
a - 程序段A()
b - 程序段B()
c -  程序段C()
d - 程序段D()
比如用户要执行 bcad
那么就是根据mapping找到方法名,然后调用不就可以了。
作者: iou90    时间: 2013-12-14 13:43

posted by wap, platform: Windows

统一下接口 然后把方法封装成委托来调
作者: nintenyun    时间: 2013-12-14 13:49

引用:
原帖由 iou90 于 2013-12-14 13:43 发表
posted by wap, platform: Windows

统一下接口 然后把方法封装成委托来调
yes。结合10楼的就是答案了 在C或者ObjectC 是 指向函数的指针
作者: 分不清雨水泪水    时间: 2013-12-14 13:52

posted by wap, platform: iPad

喷了,命令模式啊,
设计模式这是码农基本功啊
作者: 去日留痕    时间: 2013-12-14 17:45

posted by wap, platform: iPhone

好多编程业内
作者: self不self    时间: 2013-12-14 19:39

posted by wap, platform: HTC

switch语句啊,用一个for循环遍历之前配好的执行序列,循环内部就是switch
作者: lvcha    时间: 2013-12-14 20:42

我用各种方式实现过,233.
最早的很简单,我内嵌了个简单的脚本语言解析器,控制流程的这块用脚本语言实现,用户可以通过修改脚本来满足需求。这个灵活性高且简便(我的项目是面向内部测试人员)。
说是脚本语言,实际用户要做的事情很简单。
taskA.run
taskB.run
......

类推
次序,是否执行,条件执行,随您怎么用。

领导说不行啊,你这么做怎么推广啊。
好吧,我加界面。
用户一跑,蹦出个文字界面来。
1. taskA
2. taskB
3. taskC
.....
0. quit
用户要是输入:1,2,2,3,5回车,我就按您输入的顺序挨个跑一遍,每个任务执行几次由您定,执行顺序由您定。

领导又蹦出来了,不行,你这玩意太简陋了,我怎么推广啊。
好的,又一版来喽。我用java swing画了个界面。
taskA
taskB
taskC
。。。
每一个前面有个复选框,划勾我就给你执行。某个你想执行2遍?对不起了您呐,再点一次好了。

领导说不行啊,我们要集中管理你这个还得让用户安装java。
行。
web版闪亮登场,html5又把swing的活儿干了一遍。
功能·还是那些功能。

领导说还是不行啊,你这个太土了,而且功能太简陋。
okey。
最终版本,界面+流程引擎用的是ibm business process manager 8.5,数据库db2 971
用户要定制流程,好嘞,您先去xx界面把您的流程画一画,别嫌累,一个流程画一次就好省得您动不动想改流程。 画好了我帮您执行。 执行结果华丽展示,柱状图,饼图想要啥有啥。
除了慢没啥缺点了,多慢?每个按钮10秒。想快?没门,这东西黑盒子。我只能调用,内部怎么转鬼知道。

以上是我这三年的主要工作内容。
作者: lvcha    时间: 2013-12-14 20:55

我觉得我一直在做一件轻松但是傻逼的工作。
作者: 喜欢它likeit    时间: 2013-12-15 03:12

posted by wap, platform: Android

config.sys
autoexec.bat

本帖最后由 喜欢它likeit 于 2013-12-15 03:12 通过手机版编辑
作者: cc0128    时间: 2013-12-15 07:38

posted by wap, platform: Chrome

Interface Task{
void exec;
}

List<Task> tasklist = new ArrayList<Task>();
tasklist.add(new TaskA());
tasklist.add(new TaskB());
tasklist.add(new TaskA());
tasklist.add(new TaskA());
tasklist.add(new TaskC());

tasklist.forEach((Task task)=>{task.exec()});

本帖最后由 cc0128 于 2013-12-15 07:42 通过手机版编辑
作者: ffcactus    时间: 2013-12-15 09:00

posted by wap, platform: iPhone

任意顺序和循环的话还是要用户输入个XML配置文件吧。
作者: Seiker    时间: 2013-12-15 09:18

如果是从代码结构设计上来说 lz可以搜搜看 设计模式 command
作者: nintenyun    时间: 2013-12-15 09:58

核心就是把方法/函数当作参数来传递




欢迎光临 TGFC Lifestyle (http://bbs.tgfcer.com/) Powered by Discuz! 6.0.0