意圖
將一個(gè)復(fù)雜對(duì)象的構(gòu)建與它的表示分離,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示。
適用性
- 當(dāng)創(chuàng)建復(fù)雜對(duì)象的算法應(yīng)該獨(dú)立于該對(duì)象的組成部分以及它們的裝配方式時(shí)稠腊。
- 當(dāng)構(gòu)造過程必須允許被構(gòu)造的對(duì)象有不同的表示時(shí)赠叼。
參與者
- Builder ----為創(chuàng)建一個(gè)Product對(duì)象的各個(gè)部件指定抽象接口
- ConcreteBuilder
----實(shí)現(xiàn)Builder的接口以構(gòu)造和裝配該產(chǎn)品的各個(gè)部件
----定義并明確它所創(chuàng)建的表示
----提供一個(gè)檢索產(chǎn)品的接口 - Director ----構(gòu)造一個(gè)使用Builder接口的對(duì)象
- Product
----表示被構(gòu)造的復(fù)雜對(duì)象
----包含定義組成部件的類
協(xié)作
- 客戶創(chuàng)建Director對(duì)象甘改,并用它所想要的Builder對(duì)象進(jìn)行配置
- 一旦產(chǎn)品部件被生成拦键,導(dǎo)向器就會(huì)通知生成器
- 生成器處理導(dǎo)向器的請(qǐng)求,并將部件添加到該產(chǎn)品中
- 客戶從生成器中檢索產(chǎn)品
效果
- 它使你可以改變一個(gè)產(chǎn)品的內(nèi)部表示
- 它將構(gòu)造代碼和表示代碼分開
- 它使你可對(duì)構(gòu)造過程進(jìn)行更精細(xì)的控制
實(shí)現(xiàn)
- 裝配和構(gòu)造接口
- 為什么產(chǎn)品沒有抽象類
- 在Builder中缺省的方法為空