0
点赞
收藏
分享

微信扫一扫

设计模式(四)--值对象

zmhc 2022-08-16 阅读 66


★ 场景和问题

在Java开发时,需要来回交换大量的数据,比如要为方法传入参数,也要获取方法的返回值,该如何能更好的进行数据的交互?

★ 基本的编写步骤

◎第1步:写一个类,实现可序列化(如果以后数据是往数据库里存的,那么可以不序列化,节省资源)
◎第2步:私有化所有属性,保持一个默认构造方法(public无参)
◎第3步:为每个属性提供get()、set()方法(如果是boolean型变量,最好把get改成is)
◎第4步:推荐覆盖实现equals()、hashCode()和toString()方法

值对象的本质是“封装数据”


package SingelModel.pattern.example.usermanager.vo;

import java.io.Serializable;

public class UserVO implements Serializable {
private String id;
private String name;
private int age;

public UserVO() {

}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

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;
}

@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;
UserVO other = (UserVO) 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 + ", " + name + ", " + age;
}

}

如果需要延伸对象,则在UserQueryVO中,可以"2"方式,例如Age2....,同时UserQueryVO是专门用于查找.

package SingelModel.pattern.example.usermanager.vo;

public class UserQueryVO extends UserVO {

}




举报

相关推荐

0 条评论