我們需要建造乙個比較複雜的產品,如神舟飛船。這個產品建立起來非常的複雜,它肯定是由很多的零件先組成元件,然後元件再組成產品的,那麼就會涉及到元件組裝的順序問題。
實際開發中,我們所需要的物件建立時,非常的複雜,有很多的步驟需要處理的時候。
分離了物件子元件的單獨構造(由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。打個比方,我開著一輛拖拉機去石料場運載建築...