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

  变身结果

变形出脑壳... 变形出身体... 啊!...变形金刚 变身....
相关文章
相关标签/搜索