实例解析vo,bo,po,dao
首先说明我是个新手,这些概念我接触不久,我把我的想法提出来,希望大家指正
比如说一个系统设计到两个概念:“用户”、“订单”
用户跟订单是一对多关系,这里就不讨论权限(角色)那些概念了。
首先在form里,我们的页面让输入用户信息:用户名、密码,但是这里需要注意的是,这个信息里密码一般都是让输入两次的,那么我们的UserInfoForm如下:
public class UserInfoForm{
private String name;
private String pwd1;
private String pwd2;
get....
set....方法
}
注意这里有pwd1和pwd2两个值,跟页面两个文本框绑定
接着是vo,vo拿来传值的,但是vo里不需要两个pwd了,而vo又与订单有关联关系,故我理解vo应该这样:
public class UserInfoVO{
private String name;
private String pwd;
private List<OrderInfoVO> orderList;
get set方法...
}
我理解vo里是正统的oo思想,用户跟订单的关系通过一个List来表现
然后是po,我感觉po应该跟数据库表对应,这种一对多的关系,一般是在订单端加一个user_id,那么两个PO如下:
public class UserInfoPO{
private String name;
private String pwd;
get...set...
}
public class OrderInfoPO{
private String name;
private String userId;
}
注意这里,订单类里有个userId,就不是正宗的oo思想了,但为什么这么做呢?因为要做持久化,即DAO里需要这个形式
DAO:
pulic class UserInfoDAO(){
public void createUser(UserInfoPO user);
}
这里DAO引用的是PO,而不是VO,因为这样写起sql等会比较简易,而且便于持久层与业务层的解耦
总结:
1 当一个类里出现诸如:pwd1,pwd2这种形式时,那么它是个form
2 当一个类里,持有一个对象,或聚集这样正统的oo关系时,它是个vo
3 当一个类里有relatedObjectId这样的字段时,它是个po
对于BO我暂时没什么理解
不知道我的想法是否正确,希望大家指正 :)
[该贴被anjxue于2008-05-15 11:47修改过]