java 中设计模式(值对象)的实例详解
作者:lqh 发布时间:2021-12-27 14:15:08
标签:java,值对象
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


猜你喜欢
- 项目地址: GITHUB (本地下载)java mybatis 多表查询简介实现简单的实体类操作多表, 首先你的项目是
- 在Java中,线程有5中不同状态,分别是:新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(De
- 一. 先来一段代码我们先上一段代码:String str1 = new StringBuilder("你好").appe
- 对openfeign不清楚的同学可以参考下我的这篇文章:springboot~openfeign从此和httpClient说再见对于open
- Java Boolean 初始化方式1、Boolean(String boolString);以字符串的方式初始化,只有当字符串是“true
- 1.安装插件首先需要安装所用到的插件,分别用来支持Java、热部署和Tomcat服务器的插件在插件市场中搜索Java,第一个就是Extens
- 本文实例讲述了C#使用Socket实现发送和接收图片的方法。分享给大家供大家参考。具体如下:using System;using Syste
- 背景知识同步、异步、阻塞、非阻塞首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下。同步:API调用返回时调用者就知道操作的结
- 问题用过storm或者jstorm的都知道,如果在bolt代码中发生了没被catch住的异常,所在worker进程会退出。本文就从源码角度分
- @Valid:@Valid注解用于校验,所属包为:javax.validation.Valid。① 首先需要在实体类的相应字段上添加用于充当
- mybatis resulttype 返回值异常在使用mybatis时。resulttype返回自定义的类时,可能返回的类中字段数据存在缺失
- 本文实例实现了C#一键换IP、重置DNS、网关及掩码的功能,具体实现的功能为在程序界面窗口中设置ip地址和子网掩码,设置网关地址,设置DNS
- 公司的项目底层,是使用的TCP,因为可靠,自动断线重连,在底层都实现了,但是我记得TCP也会有掉包的问题,所以这文章就诞生了——关于TCP掉
- 一、引入:Android提供了View来进行绘图处理,在大部分情况下,View都能满足绘图需求。大家都知道View是通过刷新来重绘视图,An
- 本文实例为大家分享了Drawerlayout侧滑菜单的具体代码,供大家参考,具体内容如下1、Drawerlayout的xml布局<?x
- Android 使用mediaplayer播放res/raw文件夹中的音乐的实例(1)在res文件夹中新建一个文件夹重命名为raw,并且将要
- 比如我创建一个Kotlin Object类:ObjectMethodpackage com.baichuan.example.unit_te
- 使用要点如下:1.利用ListAdapter(一般使用ArrayAdapter)为AutoCompleteTextView提供数据,若有需要
- Android中的消息处理机制大量依赖于Handler。每个Handler都有对应的Looper,用于不断地从对应的MessageQueue
- using System;using System.Collections.Generic;using System.IO;using Sy