场景和问题
在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?
基本的编写步骤
◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源)
◎第2步:私有化所有属性,保持一个默认构造方法(public无参)
◎第3步:为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
◎第4步:推荐覆盖实现equals()、hashCode()和toString()方法
值对象的本质是“封装数据”
import java.io.Serializable; /** * Time:2018/4/15 * Description: * 值对象取名规范:xxxValueObject、xxxVO、xxxModel * 或者是在一个存放值对象包下直接取名xxx, * 步骤: * 1.实现序列化接口 * 2.私有化成员变量 * 3.保留一个空参构造函数 * 4.对私有化的成员变量写set、get方法,注意:boolean类型的get方法是isXxx。 * 5.写上equal和hashCode方法 * 6.写上toString方法。 * @author 宋进宇 */ //最好实现序列化接口 public class UserModel implements Serializable { private String id;//id 一般设为主键 private String userName;//用户名 private Integer age;//年龄 private String pwd;//密码 private boolean admin; //是否为管理员 boolean型的变量名不要取为 “isXxx” //因为生成的geter 函数时isXxx(),以后在框架里面会有问题。 //记得保留一个空参构造。 public UserModel() { } public boolean isAdmin() { return admin; } public void setAdmin(boolean admin) { this.admin = admin; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((id == null) ? 0 : id.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; UserModel other = (UserModel) obj; if (id == null) { if (other.id != null) return false; } else if (!id.equals(other.id)) return false; return true; } @Override public String toString() { return id + ", " + userName + ", " + age ; } }