前言:【模式總覽】——————————by xingoohtml
一個對象的建立十分複雜,爲了區分構建過程和使用過程,所以分開。使用一個Director類進行對象的建立,Builder規定了這個建立過程。設計模式
Builder 抽象建造者接口,規範各個組成部分的構建。ui
ConcreteBuilder 具體建造者角色,實現組成部分的構建,並提供示例。spa
Product 產品角色,建立返回的對象。設計
Director 導演者角色,負責建立以及使用。code
1 當建立對象複雜而且與其使用過程獨立。orm
2 構造過程容許構造的對象有不一樣的表示。htm
Builder接口對象
1 abstract class Builder{ 2 public abstract void buildPart1(); 3 public abstract void buildPart2(); 4 public abstract Product retrieveResult(); 5 }
ConcreteBuilder 具體產品blog
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 }
變身結果
變形出腦殼... 變形出身體... 啊!...變形金剛 變身....