前言:【模式總覽】——————————by xingoo
模式意圖
一個對象的創建十分復雜,為了區分構建過程和使用過程,因此分開。使用一個Director類進行對象的創建,Builder規定了這個創建過程。
模式結構

Builder 抽象建造者接口,規范各個組成部分的構建。
ConcreteBuilder 具體建造者角色,實現組成部分的構建,並提供示例。
Product 產品角色,創建返回的對象。
Director 導演者角色,負責創建以及使用。
使用場景
1 當創建對象復雜並且與其使用過程獨立。
2 構造過程允許構造的對象有不同的表示。
代碼結構
Builder接口
1 abstract class Builder{ 2 public abstract void buildPart1(); 3 public abstract void buildPart2(); 4 public abstract Product retrieveResult(); 5 }
ConcreteBuilder 具體產品
1 class ConcreteBuilder extends Builder{ 2 public void buildPart1() { 3 4 } 5 public void buildPart2() { 6 7 } 8 public Product retrieveResult() { 9 return null; 10 } 11 }
Product 產品
1 class Product{ 2 //Anything 3 }
Director 導演者角色
1 class Director{ 2 private Builder builder; 3 public void Constructor(){ 4 builder = new ConcreteBuilder(); 5 builder.buildPart1(); 6 builder.buildPart2(); 7 builder.retrieveResult(); 8 } 9 }
生活中的設計模式

‘ 近年來,變形金剛4出了也快半年了,但是還是喜歡第一部的女主角。
而擎天柱隊長,經典的台詞,“汽車人變身”也是伴隨着復雜的變化過程。而汽車人的轉變只在一瞬之間,看起來行雲流水,這就有點創建者的味道。擎天柱的各個身體部分經過復雜的變化,最后變身成為汽車人。
1 /** 2 * Builder 3 */ 4 interface Transformer{ 5 public void Create_Head(); 6 public void Create_Body(); 7 8 public Autobots transforming(); 9 } 10 /** 11 * ConcreteBuilder 12 */ 13 class Transformer_Captain implements Transformer{ 14 public void Create_Head() { 15 System.out.println("變形出腦袋..."); 16 } 17 public void Create_Body() { 18 System.out.println("變形出身體..."); 19 } 20 public Autobots transforming() { 21 return new Autobots(); 22 } 23 } 24 /** 25 * Product 26 */ 27 class Autobots{ 28 Autobots(){ 29 System.out.println("啊!...變形金剛 變身...."); 30 } 31 } 32 /** 33 * 這個類當做Director 34 */ 35 public class TransformerBuilder { 36 37 public static Autobots Transforming(Transformer optimusPrime){ 38 optimusPrime.Create_Head(); 39 optimusPrime.Create_Body(); 40 return optimusPrime.transforming(); 41 } 42 43 public static void main(String[] args){ 44 Transformer optimusPrime = new Transformer_Captain(); 45 Transforming(optimusPrime); 46 } 47 48 }
變身結果
變形出腦袋...
變形出身體...
啊!...變形金剛 變身....
