GOF23(3)之建造者模式(建立型模式)

2021-10-02 11:13:04 字數 1875 閱讀 7234

我們需要建造乙個比較複雜的產品,如神舟飛船。這個產品建立起來非常的複雜,它肯定是由很多的零件先組成元件,然後元件再組成產品的,那麼就會涉及到元件組裝的順序問題。

實際開發中,我們所需要的物件建立時,非常的複雜,有很多的步驟需要處理的時候。

分離了物件子元件的單獨構造(由builder來負責)和裝配(由director負責)。從而可以構造出複雜的物件,這個模式適用於:某個物件的構建過程複雜的情況下使用。

由於實現了構建和裝配的解耦。不同的構建器,相同的裝配,也可以做出不同的物件。相同的構建器,相同的裝配順序也可以做出不同的物件。也就是實現了構建演算法和裝配演算法的解耦,實現了更好的復用。

我們還是以car為例,使用建造者模式來構建一輛car。car主要由三個元件組成:發動機、輪胎和座椅。

package com.zdw.builder;

public class engine

public string getname()

public void setname(string name)

}

package com.zdw.builder;

public class tyre

public string getname()

public void setname(string name)

}

package com.zdw.builder;

public class seat

public string getname()

public void setname(string name)

}

package com.zdw.builder;

public class car

public void setseat(seat seat)

public tyre gettyre()

public void settyre(tyre tyre)

public engine getengine()

public void setengine(engine engine)

//車子的功能方法

public void run()

}

package com.zdw.builder;

public inte***ce icarbuilder

package com.zdw.builder;

public class carbuilderimpl implements icarbuilder

@override

public seat builderseat()

@override

public tyre createtyre()

}

package com.zdw.builder;

public inte***ce icardirector

package com.zdw.builder;

public class cardirectorimpl implements icardirector

@override

public car directorcar()

}

package com.zdw.builder;

public class testbuilder

}

sql中preparedstatement物件;

jdom中的dombuilder,saxbuilder物件。

建造者模式(建立型)

建造者模式 builder pattern 又稱生成器模式 將乙個複雜的構建與其表示相分離,使得同樣的構建過程可以建立不同的表示。這個 builder,其實和模板模式非常的像,但是也有區別,那就是在模板模式中父類對子類中的實現進行操作,在父類之中進行一件事情的處理,但是在 builder 模式之中,...

建立型 建造者模式

使用建立物件時,需要對建立例項物件的屬性進行校驗,屬性之間有一定關聯 或者需要建立的必要引數比較多,直接寫在建構函式比較難看,而直接用set又無法保證能確確實實被例項化。例 需要定義乙個執行緒池,執行緒池包括以下配置屬性 執行緒池大小 執行緒池最大空閒例項 執行緒池最小空閒例項 這幾個屬性之間存在關...

建立型設計模式之建造者模式

建造者模式 主要用於將產品修飾的這部分內容抽象化,提供給外部乙個自由定製的修飾渠道,達到自由切換修飾規則但是不用修改舊 的效果。帶有抽象介面的建造者模式主要涉及的物件有 引導者 decorate 產品 抽象建造者介面 builder 定製化的builder。打個比方,我開著一輛拖拉機去石料場運載建築...