【設計模式】—— 建立者模式Builder

  前言:【模式總覽】——————————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 }

  變身結果

變形出腦殼... 變形出身體... 啊!...變形金剛 變身....
相關文章
相關標籤/搜索