一、概述
三、构造者模式解析
Builder:是为创建一个Product对象的各个部件指定的抽象接口
ConcreteBuilder:它是具体的构建者,实现Builder接口,构造和装配各个部件。
Product:具体的产品
Director:指挥者,它是构建一个使用Builder接口的对象。
四、实例代码
构造者模式(Builder Pattern):构造者模式将一个复杂对象的构造过程和它的表现层分离开来,使得同样的构建过程可以创建不同的表示,又称为生成器模式。
在软件系统 中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变 化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定 构建算法”不随着需求改变而改变?
如果我们使用了构造者模式,那么用户就只需要指定需要构造的类型就可以得到它们,而具体的构造过程和细节就不需要知道了。
二、类图和图解
三、构造者模式解析
Builder:是为创建一个Product对象的各个部件指定的抽象接口
ConcreteBuilder:它是具体的构建者,实现Builder接口,构造和装配各个部件。
Product:具体的产品
Director:指挥者,它是构建一个使用Builder接口的对象。
四、实例代码
//产品类:
package com.javapatterns.builder;
public class Product{
public Product(){
// System.out.println("product is initing.");
}
}
//抽象建造方法:
package com.javapatterns.builder;
abstract public class Builder{
public abstract void buildPart1();
public abstract void buildPart2();
public abstract Product retrieveResult();
}
//具体的建造类:产品的零件制造
package com.javapatterns.builder;
public class ConcreteBuilder extends Builder{
private Product product = new Product() ;
public void buildPart1(){
System.out.println("build part one.");
}
public void buildPart2(){
System.out.println("build part two.");
}
public Product retrieveResult(){
return product;
}
}
//产品的建造过程:
package com.javapatterns.builder;
public class Director{
private Builder builder;
public Director(Builder builder){
this.builder = builder;
}
public void construct(){
builder = new ConcreteBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult();
//continue with other code
}
}
//测试:
package com.javapatterns.builder;
public class Client{
private static Director director;
private static Builder builder = new ConcreteBuilder();
public void requestBuild(){
// director = new Director(builder);
}
public static void main(String[] args) {
director = new Director(builder);
director.construct();
}
}