前言
通常我们创建对象 会使用以下两种:
- 无参构造函数,使用set赋值
- 带参构造函数
如果需要动态参数,就需要多个构造函数,或者频繁使用set方法,不够优雅和直观
//使用默认构造函数,set方法赋值
User defaultUser = new User();
defaultUser.setUserName("yang.liu");
defaultUser.setPassword("password");
defaultUser.setAge(18);
defaultUser.setSex(true);
//使用带参数构造函数, 需要多个构造函数,属性赋值不够直观
User paramUserFirst = new User("yang.liu", "password");
User paramUserSecond = new User("yang.liu", "password", 18, true);
构建器模式(Builder模式)
在类的内部写一个静态内部类,使用内部类进行创建类对象,并选择性的设置属性,不需要繁杂的setter与getter。
创建一个类
import lombok.Data;
/**
* 用户
*
* @author yang.liu
*/
@Data
public class User {
private String userName;
private String password;
private Integer age;
private Boolean sex;
/**
* 内部构造类
*/
public static class Builder {
public Builder() {
}
private User user = new User();
public Builder userName(String userName) {
this.user.setUserName(userName);
return this;
}
public Builder password(String password) {
this.user.setPassword(password);
return this;
}
public Builder age(Integer age) {
this.user.setAge(age);
return this;
}
public Builder sex(Boolean sex) {
this.user.setSex(sex);
return this;
}
public User build() {
return this.user;
}
}
/**
* 创建构造类对象
*
* @return
*/
public static Builder builder() {
return new Builder();
}
}
使用示例
User user = User.builder()
.userName("yang.liu")
.password("password")
.age(18)
.sex(true).build();
LY.
使用内部构造类创建对象可以直观看到属性的赋值,特别是用于多参数,需要灵活赋值的对象创建时,如配置或者条件相关类。