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