通過閱讀《Effective Java 第2版》,着重對比了一下重疊構造器模式、JavaBean模式、建構器模式三種建立對象的模式,謹以此博文加深記憶;
一、重疊構造器模式
public class UserConstructorDo{
//必填
private int b_id; //主鍵
private String b_username;//使用者名
//可選
private String b_idcard;//身份證号
private int b_sex;//性别 1 男 2 女
private int b_age;//年齡
public UserConstructorDo(int b_id, String b_username, String b_idcard, int b_sex, int b_age) {
this.b_id = b_id;
this.b_username = b_username;
this.b_idcard = b_idcard;
this.b_sex = b_sex;
this.b_age = b_age;
}
public UserConstructorDo(int b_id, String b_username) {
this(b_id,b_username,"");
}
public UserConstructorDo(int b_id, String b_username,String b_idcard) {
this(b_id,b_username,b_idcard,0);
}
public UserConstructorDo(int b_id, String b_username,String b_idcard,int b_sex) {
this(b_id,b_username,b_idcard,b_sex,0);
}
public int getB_id() {
return b_id;
}
public String getB_username() {
return b_username;
}
public String getB_idcard() {
return b_idcard;
}
public int getB_sex() {
return b_sex;
}
public int getB_age() {
return b_age;
}
//test
public static void main(String[] args) {
UserConstructorDo userConstructorDo = new UserConstructorDo(1,"zhangsan","234353454353434534");
System.out.println(userConstructorDo.getB_sex());
}
}
二、JavaBean模式
public class UserJavaBeanDo{
//必填
private int b_id; //主鍵
private String b_username;//使用者名
//可選
private String b_idcard;//身份證号
private int b_sex;//性别 1 男 2 女
private int b_age;//年齡
public int getB_id() {
return b_id;
}
public void setB_id(int b_id) {
this.b_id = b_id;
}
public String getB_username() {
return b_username;
}
public void setB_username(String b_username) {
this.b_username = b_username;
}
public String getB_idcard() {
return b_idcard;
}
public void setB_idcard(String b_idcard) {
this.b_idcard = b_idcard;
}
public int getB_sex() {
return b_sex;
}
public void setB_sex(int b_sex) {
this.b_sex = b_sex;
}
public int getB_age() {
return b_age;
}
public void setB_age(int b_age) {
this.b_age = b_age;
}
public static void main(String[] args) {
UserJavaBeanDo userJavaBeanDo = new UserJavaBeanDo();
userJavaBeanDo.setB_id(1);
userJavaBeanDo.setB_username("zhangsan");
userJavaBeanDo.setB_sex(17);
System.out.println(userJavaBeanDo.getB_sex());
}
}
三、建構器模式(推薦使用)
public class UserBuilderDo{
//必填
private int b_id; //主鍵
private String b_username;//使用者名
//可選
private String b_idcard;//身份證号
private int b_sex;//性别 1 男 2 女
private int b_age;//年齡
private UserBuilderDo(Builder build) {
this.b_id = build.b_id;
this.b_username = build.b_username;
this.b_idcard = build.b_idcard;
this.b_sex = build.b_sex;
this.b_age = build.b_age;
}
public static class Builder {
//必填
private int b_id; //主鍵
private String b_username;//使用者名
//可選
private String b_idcard;//身份證号
private int b_sex;//性别 1 男 2 女
private int b_age;//年齡
public Builder(int b_id, String b_username) {
this.b_id = b_id;
this.b_username = b_username;
}
public Builder b_idcard(String val){
this.b_idcard = val;
return this;
}
public Builder b_sex(int val){
this.b_sex = val;
return this;
}
public Builder b_age(int val){
this.b_age = val;
return this;
}
public UserBuilderDo build(){
return new UserBuilderDo(this);
}
}
public int getB_id() {
return b_id;
}
public String getB_username() {
return b_username;
}
public String getB_idcard() {
return b_idcard;
}
public int getB_sex() {
return b_sex;
}
public int getB_age() {
return b_age;
}
public static void main(String[] args) {
UserBuilderDo userBuilderDo = new UserBuilderDo.Builder(1, "zhangsan").b_idcard("23534534534").build();
System.out.println(userBuilderDo.getB_sex());
}
}