優(yōu)點(diǎn):構(gòu)造需要多個參數(shù)時可顯著改善可讀性
原理:
定義一個 static 類型的 內(nèi)部類 Builder蝎毡,并且Builder類內(nèi)部的屬性就是我們要賦值的屬性 ---> 通過各個方法把我們要賦的值封裝到 Builder的對象中唉铜,返回 this曹傀,這樣就可以使用鏈?zhǔn)降慕Y(jié)構(gòu) ---> 最后定義一個 build() 方法气笙,利用封裝了各個參數(shù)的 Builder 對象創(chuàng)建目標(biāo)對象损拢。
例子:
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();