目的
從複雜的布局中抽取出生成程序,以便用同一個生成程序製造不同的物件。
情境
假設你要載入並創建遊戲角色,你可能會有數個步驟
所以你可能會有一個 Builder 實體(機器人)負責定義載入的功能項,有另一個 Director (產生角色)負責把它們組起來。
另一個情況是,創造人形生物的方式也相同步驟,只是數值不同。
所以你可能會有個 Builder 抽象類別,定義 機器人跟 人形生物的各個部分
參與者 :
Director
- 利用 Builder 來建構物件
Builder
- 抽象類別,生成 Product 的各零件
ConcreteBuilder
- Builder 的具體實作
Product
- 希望產生的複雜物件
優點
將生成程序與內部布局的程式隔開來
假設如果今天有個不同的 Director 要產生無法辨識外觀的角色,仍可以調用機器人跟人形生物的 ConcreteBuilder ,但是不載入外型。