我的博客java
Builder模式是一步一步建立一個複雜對象的建立型模式,它容許用戶在不知道內部構建細節的狀況下,能夠更精細地控制對象的構建流程。該模式是爲了將構建複雜對象的過程和它的部件解耦,使得構建過程和部件的表示隔離開來。ui
將一個複雜對象的構建與它的表示分離,使得一樣的構建能夠建立不一樣的表示。this
相同的方法,不一樣的執行順序,產生不一樣的事件結果時。日誌
多個部件或零件,均可以裝配到一個對象中,可是產生的運行結果又不相同時。code
產品類很是複雜,或者產品類中的調用順序不一樣產生了不一樣的做用。對象
當初始化一個對象特別複雜,如參數多,且不少參數都具備默認值時。事件
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類get
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模式比較常見的實現形式是經過調用鏈實現,使得代碼更簡潔、易懂。