定 義:將乙個複雜物件的構建與它的表示分離,使得同一構建過程可以建立不同的表示。
結構圖:
產品類:
classview codeproduct
public
void
show()}}
抽象建造者類:
abstractview codeclass
builder
具體建造者類:
///view code///具體建造者類1
/// class
concretebuilder1 : builder
public
override
void
builderpartb()
public
override
product getresult()
}//////
具體建造者類2
/// class
concretebuilder2 : builder
public
override
void
builderpartb()
public
override
product getresult()
}
指揮者類:
classview codedirector
}
客戶端**:
director director = newview codedirector();
builder b1 = new
concretebuilder1();
builder b2 = new
concretebuilder2();
director.construct(b1);
//指揮者用concretebuilder1的方法來建立產品
product p1 =b1.getresult();
p1.show();
director.construct(b2);
//指揮者用concretebuilder2的方法來建立產品
product p2 =b2.getresult();
p2.show();
優點:
•使用者只需要指定要建造的型別就可以得到它們,而具體的建造過程和細節不需要知道。
•建造**與表示相分離,如果要改變乙個產品的內部表示,只要再定義乙個新的具體的建造者就可以了。
•建造過程由指揮者來控制,建造細節由乙個抽象類來控制,對於實現建造細節的具體類來說,不會遺漏某乙個步驟。
缺點:
•產品的構造元件被定義在builder,增加新的產品的乙個細節需要修改builder,違背了「開閉原則」。
應用情景:
•當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時。
•當複雜物件的部件相對穩定,不會發生變化時。
Java設計模式(五) 建造者模式Builder
我們要建造乙個複雜的產品。比如 神舟飛船 iphone。這個複雜的產品的建立,有這樣乙個問題需要處理 要構建的物件,宇宙飛船 package com.iter.devbox.builder 宇宙飛船 author shearer public class airship public orbital...
設計模式讀書筆記之建造者模式 Builder
建造者模式 將複雜物件的建造和表示分離,使同樣的建造過程可以創造出不同細節的產品.建造者模式,聽名字就應該知道和工廠模式一樣,是用來創造物件的。但是建造者和工廠模式的區別就是工廠模式只關注最終的產品,它往往是簡單的呼叫被建立者的建構函式 而建造者更關心細節,它定義了建立乙個複雜物件所需的步驟,而建立...
設計模式 建造者模式
在gof的23種設計模式中對builder pattern的定義是 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。從程式角度來說,就是在基類定義某種事物建立的過程或業務流程,在子類進行重寫或是使用基類方法。這樣建立出來的例項不會因為過程或流程的丟失而使業務失敗。舉例來說,...