首页 > 代码库 > 【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)