JiveJdon Community Forums
在线276人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 7 回复 / 1
 发表新帖子   回复该主题贴
maxq

悄悄话
发表文章: 3
注册时间: 2004年05月13日 20:08
多路分支程序该如何设计? 2004年05月13日 20:13 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表 设计模式(144)     
经常接触到这样的需求,根据不同的输入数据采用不同的操作,比如一些命令行工具,一些处理日志的工具等。简单点说,如果使用
if () {}
else if () {

}else if () {

}else {

}
或者switch等都感觉不是太好的办法。
哪位有好的经验说出来大家讨论啊~
wild fox

悄悄话
发表文章: 55
注册时间: 2003年03月19日 17:34
Re: 多路分支程序该如何设计? 2004年05月14日 13:59 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
可以考虑采用Command 模式

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

命令1 Command1
命令2 Command2
命令3 Command3

使用的时候

//根据输入的命令从配置中取得执行操作的对象
Command cmd = xxx.getCommand(<命令>);
cmd.execute();


banq

悄悄话
发表文章: 9312
注册时间: 2002年08月03日 17:08
Re: 多路分支程序该如何设计? 2004年05月14日 18:16 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
感觉楼主场景描述不够细致。如果为替代if elseIf语句,可选模式比较多,如上面的Command模式、状态State模式都可以。
maxq

悄悄话
发表文章: 3
注册时间: 2004年05月13日 20:08
Re: 多路分支程序该如何设计? 2004年05月15日 09:01 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
Command等模式确实可以解决这些问题。
我最近写了一个命令行工具,采用的方法类似于Command模式,我将用户输入的String和对应的Command放入到一个Map中,Command中封装了处理用户请求的Handler实例。

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

悄悄话
发表文章: 6
注册时间: 2004年03月12日 17:39
Re: 多路分支程序该如何设计? 2004年05月17日 10:43 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我的理解是将选择分支的处理转移至Command类中,至于是否使用State模式,我觉得应视分支内部对逻辑处理的粒度而定。如果粒度小,没有必要使用State模式。
wild fox

悄悄话
发表文章: 55
注册时间: 2003年03月19日 17:34
Re: 多路分支程序该如何设计? 2004年05月17日 15:58 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
根据楼主的描述,似乎不涉及到状态之间的转换,因此应用Command模式可能要恰当点
guyuanwuxin

悄悄话
发表文章: 17
注册时间: 2004年02月06日 10:26
Re: 多路分支程序该如何设计? 2004年05月18日 10:36 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
Command模式
iterator

悄悄话
发表文章: 3
注册时间: 2004年06月23日 19:16
Re: 多路分支程序该如何设计? 2004年06月23日 21:04 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
我觉得有一个问题要考虑。就是处理时的上下文。

if...else中处理,可以利用所在类中的数据

而移到别的类中时,上下文改变了,处理时所需的数据可能取不到,这样不得不引用其它的对象,这样造成偶合。。。我很讨厌的

我喜欢完全独立的对象,如果对象间需要相互作用,常常移到客户代码里去实现
这个主题有 7 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam