天天看點

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

  前言:【模式總覽】——————————by xingoo

  模式意圖

  一個對象的建立十分複雜,為了區分建構過程和使用過程,是以分開。使用一個Director類進行對象的建立,Builder規定了這個建立過程。

  模式結構

【設計模式】—— 建立者模式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 }      

  生活中的設計模式

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

  

‘  近年來,變形金剛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 }      

  變身結果

變形出腦袋...
變形出身體...
啊!...變形金剛 變身....      

作者:xingoo

出處:http://www.cnblogs.com/xing901022

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!