首页 > 代码库 > 【java类的设计模式—02】建造者模式(Builder pattern)

【java类的设计模式—02】建造者模式(Builder pattern)

参考1:http://en.wikipedia.org/wiki/Builder_pattern

参考2:http://www.cnblogs.com/devinzhang/archive/2012/01/06/2314670.html

  建造者模式通过一个builder的对象对大量构造器一步一步执行并返回构造的结果。The intent of the Builder design pattern is toseparate the construction of a complex object from its representation. By doingso the same construction process can create different representations。结构如下:


Builder:创建大量对象的接口。

ConcreteBuilder:实现了Builder的类,返回最终的Product

Director:获得Builder并执行所有构造。

  下面以参考2中一个实例来说明:

public interface Builder {
    void buildPartA();
    void buildPartB();
    void buildPartC();
     ……
    Product getResult();
  }
 
   //具体建造工具
  public class ConcreteBuilder implements Builder {
    Part partA, partB, partC;
 
    public void buildPartA() {
      //这里是具体如何构建partA的代码
    };
    public void buildPartB() {
      //这里是具体如何构建partB的代码
    };
     public void buildPartC() {
      //这里是具体如何构建partB的代码
    };
……
     public Product getResult() {
      //返回最后组装成品结果
    };
  }
 
   //建造者
  public class Director {
    private Builder builder;
  
    public Director( Builder builder ) {
      this.builder = builder;
    }
    public void construct() {
      builder.buildPartA();
      builder.buildPartB();
      builder.buildPartC();
           ……
    }
}
//Product的实例化依赖于Part的各种实例化
  public interface Product { }
public interfacePart { }


*******************************************************************************

下面是调用builder的方法:

  ConcreteBuilder builder = newConcreteBuilder()
  Director director = new Director( builder ); 
  director.construct(); 
  Product product = builder.getResult();


*******************************************************************************

 这里面Director负责执行ConcreteBuilder的构建工作,优点是分离了构建过程。也可以让ConcreteBuilder自己执行这个构建过程,去掉Director,这是建造者模式的简化版本。

【java类的设计模式—02】建造者模式(Builder pattern)