多路分支程序该如何设计?

04-05-13 maxq
经常接触到这样的需求,根据不同的输入数据采用不同的操作,比如一些命令行工具,一些处理日志的工具等。简单点说,如果使用

if () {}

else if () {

}else if () {

}else {

}

或者switch等都感觉不是太好的办法。

哪位有好的经验说出来大家讨论啊~

    

wildfox
2004-05-14 13:59
可以考虑采用Command 模式

在一个配置文件中,建立输入的值和执行操作的对象的对应关系如:

命令1 Command1

命令2 Command2

命令3 Command3

使用的时候

//根据输入的命令从配置中取得执行操作的对象

Command cmd = xxx.getCommand(<命令>);

cmd.execute();

banq
2004-05-14 18:16
感觉楼主场景描述不够细致。如果为替代if elseIf语句,可选模式比较多,如上面的Command模式、状态State模式都可以。

maxq
2004-05-15 09:01
Command等模式确实可以解决这些问题。

我最近写了一个命令行工具,采用的方法类似于Command模式,我将用户输入的String和对应的Command放入到一个Map中,Command中封装了处理用户请求的Handler实例。

改天传上代码请各位指教。

chesterwoo
2004-05-17 10:43
我的理解是将选择分支的处理转移至Command类中,至于是否使用State模式,我觉得应视分支内部对逻辑处理的粒度而定。如果粒度小,没有必要使用State模式。

猜你喜欢
2Go 1 2 下一页