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

发表文章: 2
注册时间: 2007年10月24日 10:28
给他发消息
如何处理Value Object的继承关系 发表: 2007年10月24日 10:39 回复
我有一个这样的问题:
类A是一个容器对象,包含了一个B对象的List. A和B都是VO对象,它们一起成为一个包含一些业务数据的数据结构。A返回给类C,类C是一个业务逻辑对象。它处理并显示A的内容,当然也要取出A里面的B做相应的处理。
问题是,现在我们有一个类似的业务,数据和原有的数据几乎相同,只是B里面多了一些东西。这时候,可以有下面三个选择:
1.修改B,加上新的内容。这样A包含B的数据结构也可以给新业务用。
2.创建新的类A2和B2,让他们完全是新的东西。但是这个问题是出现了重复的代码。唯一不同的是B2里面多了一些东西。
3.我感觉最理想的是B2继承B,添加新的东西。但这个问题是,新业务里面仍然使用A,只不过A里面包含的B2了。可是对于外部的业务处理类,比如C2,它怎么知道是B2而不是B呢?可以用强制类型转换,但这不是好的办法。
希望大家指点一下。

这基本上是一个VO对象的继承关系的处理问题。我翻了23各设计模式,没有看到适合的。
谢谢!
banq

发表文章: 9074
注册时间: 2002年08月03日 17:08
给他发消息
回复:如何处理Value Object的继承关系 发表: 2007年10月24日 15:58 回复
>我感觉最理想的是B2继承B,添加新的东西。但这个问题是,新业务里面仍然使用A,>只不过A里面包含的B2了。

使用这个方案,模式已经告诉我们,一般不要轻易破坏封装,那么继承就成为常用选择,应该选择这个方向。

>可是对于外部的业务处理类,比如C2,它怎么知道是B2而>不是B呢?可以用强制类>型转换,但这不是好的办法。希望大家指点一下。
那你要做一个新的方法,相当于A的工厂方法。

另外, 如果不重新考虑业务,单纯就VO论VO,是找不出完美的设计方案的,这其实也就是业务建模重要的一个步骤。
zjueman

发表文章: 2
注册时间: 2007年10月24日 10:28
给他发消息
re:如何处理Value Object的继承关系 发表: 2007年10月24日 23:03 回复
谢谢banq的指点。
我现在差不多决定创建新的A2和B2了,让它们独立于现有A和B. 感觉这样简单些,可以确定不会破坏A和B以及原有的逻辑。很多同事都认为这样做好些。我也就认同了。
不过感觉还是不理想,但是还没有想到理想的方案。
使用B2继承B强制转换太麻烦了。但是如果使用工厂,感觉又需要比较大的动作。估计会被否决的。先使用这个简单的方案了。
这个主题有 2 回复 / 1 页 [ ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam