优点:构造需要多个参数时可显著改善可读性
原理:
定义一个 static 类型的 内部类 Builder,并且Builder类内部的属性就是我们要赋值的属性 ---> 通过各个方法把我们要赋的值封装到 Builder的对象中,返回 this,这样就可以使用链式的结构 ---> 最后定义一个 build() 方法,利用封装了各个参数的 Builder 对象创建目标对象。
例子:
public class Hero{
String name;
BigDecimal atk;
public Hero(Builder builder){
this.name= builder.name;
this.atk = builder.atk;
}
public static class Builder{
private String name;
private BigDecimal atk;
public Builder setName(String name){
this.name= name;
return this;
}
public Builder setATK(BigDecimal atk){
this.atk= atk;
return this;
}
public Hero build(){
return new Hero(this);
}
}
}
使用:
new Builder().setATK(new BigDecimal(5)).setName("小悟饭").build();