/**
* user用户类
* @author tao
*/
public class User {
//用户的属性
private final String name;//姓名
private final String idCard;//身份证
private final int age;//年龄
private final String married;//是否结婚
public static class Builder{
//和用户类相同属性
private String name;
private String idCard;
private int age = 0;
private String married = "NO";
/**
* 必选属性输入
* @param name
* @param idCard
*/
public Builder(String name, String idCard){
this.name = name;
this.idCard = idCard;
}
/**
* 选填属性,年龄
* @param age
* @return
*/
public Builder setAge(int age){
this.age = age;
return this;
}
/**
* 选填属性,是否结婚
* @param married
* @return
*/
public Builder setMarried(String married){
this.married = married;
return this;
}
/**
* 创建User类返回
* @return
*/
public User build(){
return new User(this);
}
}
/**
* 私有化构造器,使其不能用于new,extends
* @param builder
*/
private User(Builder builder){
this.name = builder.name;
this.idCard = builder.idCard;
this.age = builder.age;
this.married = builder.married;
}
public String getName() {
return name;
}
public String getIdCard() {
return idCard;
}
public int getAge() {
return age;
}
public String getMarried() {
return married;
}
@Override
public String toString() {
return "User [name=" + name + ", idCard=" + idCard + ", age=" + age
+ ", married=" + married + "]";
}
/**
* 测试builder的事例
* @param args
*/
public static void main(String[] args) {
User user = new User.Builder("小明", "123456789").setAge(20).build();
System.out.println("user is :" + user);
}
}
使用Builder来进行类创建,使得代码看上去跟清晰易懂,调用时更方便
java Builder模式
最新推荐文章于 2023-06-15 20:30:44 发布