Java建造者模式

建造者模式是將多個零件集中起來創(chuàng)建復(fù)雜對象,所謂復(fù)雜對象就是指某個類具有多個不同的屬性

一 、建造者模式的寫法

public class Computer {

    private String name;
    private String CPU;
    private String GPU;

    public Computer() {
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setCPU(String CPU) {
        this.CPU = CPU;
    }

    public void setGPU(String GPU) {
        this.GPU = GPU;
    }

    public static class Builder {

        private Computer computer;
        private String name;
        private String CPU;
        private String GPU;

       public Builder(){
           computer = new Computer()
       }

        public Builder setName(String name) {
            computer.setName(name);
            return this;
        }

        public Builder setCPU(String CPU) {
            computer.setCPU(CPU);
            return this;
        }

        public Builder setGPU(String GPU) {
            computer.setGPU(GPU);
            return this;
        }

        public Computer build() {
            return computer;
        }
    }

}  

使用

Computer computer = new Computer.Builder()
               .setCPU("AMD")
               .setGPU("英偉達(dá)")
               .setName("聯(lián)想")
               .build();  

二 、一般的寫法

public class Computer {

    private String name;
    private String CPU;
    private String GPU;  

    public Computer() {
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setCPU(String CPU) {
        this.CPU = CPU;
    }

    public void setGPU(String GPU) {
        this.GPU = GPU;
    }  

使用

Computer computer = new Computer()
                computer.setCPU("AMD")
                computer.setGPU("英偉達(dá)")
                computer.setName("聯(lián)想");  

三、對比

你可能會說第二種方法寫法上不是更簡便嗎,其實這也是我當(dāng)初的疑問,下面我們來看一下建造者模式的優(yōu)缺點。

優(yōu)點
1. 將復(fù)雜產(chǎn)品的創(chuàng)建步驟分解在不同的方法中,使得創(chuàng)建過程更加清晰,使得我們能夠更加精確的控制復(fù)雜對象的產(chǎn)生過程。
2. 將產(chǎn)品的創(chuàng)建過程與產(chǎn)品本身分離開來,可以使用相同的創(chuàng)建過程來得到不同的產(chǎn)品。也就說細(xì)節(jié)依賴抽象。
3. 每一個具體建造者都相對獨立,而與其他的具體建造者無關(guān),因此可以很方便地替換具體建造者或增加新的具體建造者,用戶使用不同的具體建造者即可得到不同的產(chǎn)品對象。
缺點
1. 建造者模式所創(chuàng)建的產(chǎn)品一般具有較多的共同點,其組成部分相似,如果產(chǎn)品之間的差異性很大,則不適合使用建造者模式,因此其使用范圍受到一定的限制。
2. 如果產(chǎn)品的內(nèi)部變化復(fù)雜,可能會導(dǎo)致需要定義很多具體建造者類來實現(xiàn)這種變化,導(dǎo)致系統(tǒng)變得很龐大。


四、總結(jié)
總之,建造者模式是將復(fù)雜對象的創(chuàng)建和對象創(chuàng)建的過程分離開,這樣使得代碼的邏輯清晰,鮮明易懂。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容