关于Delegate和Value Object两种模式,理解很模糊,请各位达人能详细说明一下么?

GOALSTAR 2004-09-07 01:35:04
在做J2EE项目的时候

工程用到了这两个项目,虽然按照步骤能做出来。可是理解却很模糊。

各位达人能详细说明这两种模式在J2EE上的作用和实现原理么
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yeshucheng 2004-09-13
  • 打赏
  • 举报
回复
楼上说的,可以这么去理解。
至于楼主提到的粗粒度,你不妨可以这么去理解:
比如我们工作中有个部门,部门里存在很多的员工(这里就是个1:N的结构关系)
public class dept {
private String id;
private String info;
private String[] employee;//这里的员工作为一个对象就完全可以理解成一个粗粒度的考虑
.....
public String getXXX();
....
}
shangqiao 2004-09-11
  • 打赏
  • 举报
回复
我觉得delegate是对操作的封装,而VO是对往返于这之间的数据的封装
GOALSTAR 2004-09-11
  • 打赏
  • 举报
回复
还有个是粗粒度和细粒度的问题怎么理解啊
NewTypeQ 2004-09-08
  • 打赏
  • 举报
回复
那本经典的EJB Design Pattern上有详细说明
mor 2004-09-07
  • 打赏
  • 举报
回复
IBM Developer World上的两枚文章

Web 服务的体系结构和最佳实践
http://www-900.ibm.com/developerworks/cn/wsdd/techjournal/0310_brown/brown.shtml
这枚文章里谈到了Delegate

EJB 最佳实践:用值对象加速您的 RMI 事务
http://www-900.ibm.com/developerWorks/cn/java/j-ejb0910/index.shtml
这枚是讲value object的

yeshucheng 2004-09-07
  • 打赏
  • 举报
回复
其实如果单纯的用语言来描述这两个问题可能比较困难(uml最能表达清楚):

Delegate:我们从字面理解就是一种代理,当前端的servlet调用delegate时是以一种判断行为存在,在它上多半以boolean形式来判断你所操作的对象作何行为动作,如果行为存在或者说允许则返回true,否则false(这里可以抛出异常,例如作为一个事物是插入数据,一旦有存在相同的关键字信息,就能很好的抛出异常).一旦成立为true,则调用隐藏在后端的sessionFacade,在sessionBean中就存在是个对动作的真正的执行了。

VO(value object):值对象,这种模式一般在大型项目中都会采用。它的好处就在于它把数据库表中的参数作为一个类来封装(个人觉得这是考虑到软件工程中粗粒度的问题),作为客户端频繁的操作后台的数据库对于整个系统都是一种大能源消耗(例如:客户按照常理就要多次调用业务对象的get方法,这样每次都要一次网络调用,从而造成系统性能的退化)。而值对象是以任意可串化的java对象,这样大量数据封装在其中并且保存在内存中,这样就使得客户不需要到数据库中去查询数据,而只需要在内存中读取对象,节省了大量时间和系统开销

ecaol 2004-09-07
  • 打赏
  • 举报
回复
UP

50,541

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧