Builder模式就是不直接生成想要的對象,而是讓客戶端利用所有必要的參數(shù)調(diào)用構(gòu)造器,得到一個builder對象。然后再builder對象上調(diào)用類似setter的方法,來設(shè)置每個相關(guān)的可選參數(shù)。
最后,客戶端調(diào)用無參數(shù)的build方法來生成不可變的對象。(此篇文章為自己總結(jié),如有錯誤歡迎糾正,謝謝。)
例子:
package com.cn.test;
public class A {
private int a;
private int b;
private String c;
private String d;
public static class Builder {
private int a ;
private int b;
private String c;
private String d;
public Builder(int a,int b){}
this.a = a;
this.b = b;
}
public Builder setC(String c) {
this.c = c;
return this;
}
public Builder setD(String d) {
this.d = d;
return this;
}
public A build() {
return new A(this);//很關(guān)鍵 只有調(diào)用this的構(gòu)造函數(shù)才能賦值
}
}
public A() {
}
private A(Builder builder) {
a = builder.a;
b = builder.b;
c = builder.c;
d = builder.d;
}
}
調(diào)用:
A a = new A.Builder(1, 2).setC("c").setD("d").build();