PO,BO与VO
以前不明白PO,BO与VO的区别,以为多次一举,总是让PO穿越持久层,业务层,直达表现层,还自以为省事。上个月才知道,原来是自己的技术水平太低的缘故。
PO,Persistence Object,即持久层对象。
BO,Business Object,即业务层对象。
VO, View Ojbect,即表现层对象。
这三者确实不同,在简单的小系统里面,可能有时会重合。但在大一点的系统里面,三者分工明确,虽然在一开始,可能要多几行代码,显得麻烦些,可是其对系统可拓展性,可维护性的好处,远远超出了所付的代价。
比如,上个月初,为了支持一个用户多个blog,为了方便操作,给blogentry表的PO增加了sitepath,结果,从持久层,到业务层,到表现层,一路改过来。为了,增加一个字段,修改了不知道多少个程序。这就是典型的缺乏可维护性。
后来,再一想,改得不对。虽然显示blog文章的时候,新的设计需要获取sitepath,但sitepath其实与blogentry无关,而只与blog相关。正确的做法,应该是在业务层重新组合BLOG,BLOGENTRY两个PO,得到一个新的BO,这个BO既包含了PO BLOGENTRY的主要属性,也包含了PO BLOG的sitepath属性,以及其他必要的属性。
类似的,在表现层,一个VO,典型地包含多个PO里面的部分信息,比如一条BBS帖子,可能包含PO USER里面的USERNAME,PO NEWS里面的subject,body,cdate,还可能包括PO IMAGES里面的IMAGE,以及其他相关信息,而这些信息往往是通过业务层的BO传过来的,BO由于需要,可能已经对持久层的PO作了重新包装。


hofman   2005-10-10 11:05:16 评论:0   阅读:1379   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

2003-2007@copyright