java 中设计模式(值对象)的实例详解
作者:lqh 时间:2021-12-27 14:15:08
java 中设计模式(值对象)的实例详解
应用场景:在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?这个时候就需要用到我们的值对象设计模式
值对象的本质是“封装数据
具体步骤:
1. 所写的类必须实现序列化Serializable(序列化是为了防止数据读取的时候数据丢失)。 同时主要这个类的命名规范。值对象的命名规范: XxxValueObject, XxxVO, XxxModel。
2. 必须要写一个成员变量Id作为主键。(这个很好理解,你传入的数据姓名啊,地址或者其他可以相同,但是一定要有一个Id作为主键,来区分不同数据)
3. 必须要写一个空参的构造函数。
空参构造函数可以用来收集部分数据以及不同地方的数据(比方说你在这个页面用户只填写了姓名和性别信息,在其他地方收集到地址信息,空参很好的收集起来)
4. 写所有成员变量的set-get方法。用来收集和处理数据。为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
5. 推荐覆盖实现equals()、hashCode()和toString()方法
具体实现代码(以传递个人地址数据为例)
import java.io.Serializable;
//值对象的命名规范: XxxValueObject, XxxVO, XxxModel
//1实现序列化接口
public class AddressVO implements Serializable {
private static final long serialVersionUID = 1L;
// 2私有化所有成员变量
private String userId;
private String name;
private int age;
private boolean man; //变量名建议不要取成isMan(JSP碰到这种情况会有bug)
private String address;
// 3 必须要有一个默认的空参构造
public AddressVO() {
}
// 4 写所有成员变量的setter-getter方法---boolean型变量的getter方法写成isXXX()的形式
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isMan() {
return man;
}
public void setMan(boolean man) {
this.man = man;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
//5 建议写equals,hashCode,toString这几个方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((userId == null) ? 0 : userId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
AddressVO other = (AddressVO) obj;
if (userId == null) {
if (other.userId != null)
return false;
} else if (!userId.equals(other.userId))
return false;
return true;
}
@Override
public String toString() {
return "AddressVO [userId=" + userId + ", name=" + name + ", age="
+ age + ", man=" + man + ", address=" + address + "]";
}
}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:http://blog.csdn.net/weixin_37720904/article/details/60756397
标签:java,值对象
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
java编程题之顺时针打印矩阵
2022-02-22 04:05:36
Spring Boot整合流控组件Sentinel的场景分析
2023-06-22 19:27:53
![](https://img.aspxhome.com/file/2023/0/57600_0s.jpg)
C#多线程之任务的用法详解
2023-08-27 10:51:18
![](https://img.aspxhome.com/file/2023/9/69209_0s.png)
linphone-sdk-android版本号生成解析
2022-10-18 14:43:18
c# 给pdf添加数字签名的步骤
2022-04-05 17:58:01
![](https://img.aspxhome.com/file/2023/1/71741_0s.png)
springboot中request和response的加解密实现代码
2023-05-27 16:46:27
![](https://img.aspxhome.com/file/2023/6/79826_0s.png)
WinForm拖拽控件生成副本的解决方法
2022-07-02 13:28:26
![](https://img.aspxhome.com/file/2023/5/76385_0s.png)
一篇文章带你入门Java接口
2023-11-06 02:07:55
Spring BeanDefinition使用介绍
2023-11-24 10:29:10
![](https://img.aspxhome.com/file/2023/5/59945_0s.png)
IDEA中sout快捷键无效问题的解决方法
2023-11-28 21:27:02
![](https://img.aspxhome.com/file/2023/7/60817_0s.png)
Spring源码之循环依赖之三级缓存详解
2021-11-13 09:31:56
![](https://img.aspxhome.com/file/2023/7/62737_0s.jpg)
SSM框架搭建图文教程(推荐)
2023-11-10 20:39:07
![](https://img.aspxhome.com/file/2023/1/59061_0s.png)
Android登录注册功能 数据库SQLite验证
2023-10-01 20:58:55
![](https://img.aspxhome.com/file/2023/6/86926_0s.gif)
java文件下载代码实例(单文件下载和多文件打包下载)
2023-02-16 00:38:37
关于Struts2文件上传与自定义拦截器
2021-10-31 12:52:44
一文搞懂JMeter engine中HashTree的配置问题
2022-05-11 01:21:08
![](https://img.aspxhome.com/file/2023/2/82022_0s.jpg)
datatable去掉重复行的方法
2023-09-02 19:59:41
Java如何获取对象属性及对应值
2022-03-30 07:03:05
Java中的多态用法实例分析
2021-07-11 18:36:35
![](https://img.aspxhome.com/file/2023/8/77098_0s.png)
Java编程实现获取当前代码行行号的方法示例
2021-06-28 06:51:14