前言:【模式總覽】——————————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 }
變身結果
變形出腦袋...
變形出身體...
啊!...變形金剛 變身....
作者:xingoo
出處:http://www.cnblogs.com/xing901022
本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!