- 论坛徽章:
- 0
|
简单说,ValueObject的值(状态)一旦创建以后就不会改变了
。所以可以当基本数据类型
用。比如Java
中的String, BigDecimal, BigInteger都是ValueObject。StringBuffer就不是。
表示的是:VO对象相当于是一种新的数据类型了能够当作参数进行传递的!
Model_conf confVO = new Model_conf();
DTO模式或称VO
模式,是指将数据封装成普通的JavaBeans
,在J2EE多个层次之间传输。
常见的方式就是为实体对象建立一个Model类,该类只包含这个对象所有字段的getter和setter
。例如用户User实体有name, password字段,则建立一个UserModel类,public方法有getName,setName,getPassword,setPassword。这样就可以把UserForm作为参数传给其他函数。
可以充当是一个参数进行传递的!特别是在J2EE的各层之间进行传递处理!
我们可以通过定义一个简单的Java类(实现Serializable接口),其中定义一些属性,并提供相应的get和set方法来解决上面的问题。
使用ValueObject来封装业务数据
,并且有一个单独的方法
可以用来获取或者发送这个VO
,当客户端请求一些业务数据的时候,服务端就可以产生出一个VO
,并且将它赋值,最后,可以用传值
的方法传递给客户端。
这样的好处是减少网络对话,加速层之间的数据交流
,我觉得,这样更大的好处是使程序逻辑更加清楚,更加面向对象
。写VO
的时候,要实现Serializable
接口。
public UserVO implements Serializable {
private String loginId;
private String password;
private String name;
private String role;
... ...
}
示例如下:
public Model_conf getConf(int conf_id) {
_DBUtil db = new _DBUtil();
Model_conf confVO = new Model_conf();
List rs = db.executeQuery("select * from url_conf where url_id="+conf_id);
java.util.Iterator it = rs.iterator();
try {
if (it.hasNext()) {
HashMap map = (HashMap) it.next();
confVO.setUrl_add((String) map.get("url_memo"));
confVO.setUrl_memo((String)map.get("url_add"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return confVO;
}
如果客户端提交一个AJAX请求过来服务端能够产生出来一个VO对象。接收到这个VO对象之后
直接使用<userbean方法!
VO模式将来是我编写JAVABEAN的一个借鉴方法的!
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84280/showart_2059036.html |
|