在线276人
首页
主题总表
培训咨询
精华
查搜
注册
登陆
用户
自动登陆
密码
新用户注册
忘记密码?
首页
»
论坛
»
设计模式、框架和架构
上一主题
我想得到表T_Bidding_QuestAndAnswerAnnex的全部字段、表T_Base_Project部分字段 内容 (我用了引用project对象,"many-to-one";而事实上我..
返回本主题
返回主题列表
下一主题
public static List getReadyTask() { return PersistentLogic.find("FROM Task t WHERE (t.statu..
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
回复 /
1
页
Go
上一主题
返回本主题
返回主题列表
返回页首
下一主题
热点TAG:
AOP
cache
缓存
DDD
EJB
集群
设计模式
Hibernate
IOC
JiveJdon
OO
RBAC
Seam
Spring
Struts
正在读取,请等待...
查询本论坛内
近一天
近三天
近一周
近一月
近三月
近半年
近一年
所有
回复超过
的热门帖子
标题
内容
解惑之道在
J道
,打造中国最具影响力的的企业软件社区
OpenSource
JIVEJDON
v3.0
Powered by
JdonFramework
Code © 2002-08
jdon.com
anti spam