個人博客 "http://www.milovetingting.cn" Builder模式 模式介紹 Builder模式是一步一步創建一個複雜對象的創建型模式,它允許用戶在不知道內部構建細節的情況下,可以更精細地控制對象的構建流程。該模式是為了將構建複雜對象的過程和它的部件解耦,使得構建過程和部件的 ...
個人博客
Builder模式
模式介紹
Builder模式是一步一步創建一個複雜對象的創建型模式,它允許用戶在不知道內部構建細節的情況下,可以更精細地控制對象的構建流程。該模式是為了將構建複雜對象的過程和它的部件解耦,使得構建過程和部件的表示隔離開來。
模式定義
將一個複雜對象的構建與它的表示分離,使得同樣的構建可以創建不同的表示。
使用場景
相同的方法,不同的執行順序,產生不同的事件結果時。
多個部件或零件,都可以裝配到一個對象中,但是產生的運行結果又不相同時。
產品類非常複雜,或者產品類中的調用順序不同產生了不同的作用。
當初始化一個對象特別複雜,如參數多,且很多參數都具有預設值時。
模式的簡單實現
Computer類
public class Computer {
private String mCpu;
private String mScreen;
private String mHd;
public Computer(String cpu, String screen, String hd) {
this.mCpu = cpu;
this.mScreen = screen;
this.mHd = hd;
}
@Override
public String toString() {
return "Computer [mCpu=" + mCpu + ", mScreen=" + mScreen + ", mHd=" + mHd + "]";
}
}
ComputerBuilder類
public class ComputerBuilder {
public static class Builder {
private String mCpu = "cpu";
private String mScreen = "screen";
private String mHd = "hd";
public Builder cpu(String cpu) {
mCpu = cpu;
return this;
}
public Builder screen(String screen) {
mScreen = screen;
return this;
}
public Builder hd(String hd) {
mHd = hd;
return this;
}
public Computer build() {
return new Computer(mCpu, mScreen, mHd);
}
}
}
預設使用
public static void main(String[] args) {
Computer computer = new ComputerBuilder.Builder().build();
System.out.println(computer);
}
輸出日誌
Computer [mCpu=cpu, mScreen=screen, mHd=hd]
自定義參數
public static void main(String[] args) {
Computer computer = new ComputerBuilder.Builder().cpu("CPU").screen("SCREEN").hd("HD").build();
System.out.println(computer);
}
輸出日誌
Computer [mCpu=CPU, mScreen=SCREEN, mHd=HD]
小結
Builder模式在Android開發中較為常用,通常作為配置類的構建器,將配置的構建和表示分離開來,同時也是將配置從目標類中隔離出來,避免過多的setter方法。Builder模式比較常見的實現形式是通過調用鏈實現,使得代碼更簡潔、易懂。