建造者模式,或称之为生成器模式,是将对象的构造过程从对象的各种表示中分离出来。
从而通过建造者组合不同的构造参数,实例化出对象的不同表示。
建造者模式和工厂模式的差异:
工厂模式:将不同产品类的实例化过程整合成不同的工厂,并不关注某一工厂内的具体构造过程。
建造者模式:整合同一个产品类不同的实例化过程(多个构造参数组合成不同的对象表示),构造不同的对象表示。
通常认为,建造者模式由四部分组成:
- Builder:建造者抽象接口
- ConcreteBuilder:建造者具体实现
- Director:使用Builder引导建造过程
- Product:具体产品
Builder建造者接口:
public interface Builder {
public void buildField1(String field1);
public void buildField2(String field2);
public Product build();
}
ConcreteBuilder建造者的具体实现类:
class ConcreteBuilder implements Builder{
private Product product;
public ConcreteBuilder() {
product = new Product();
}
@Override
public void buildField1(String field1) {
product.setField1(field1);
}
@Override
public void buildField2(String field2) {
product.setField2(field2);
}
@Override
public Product build() {
return product;
}
}
Director,实际使用中常被省略:
class Director {
public Product construct(Builder builder) {
builder.buildField1("field1");
builder.buildField2("filed2");
return builder.build();
}
}
Product具体产品:
class Product {
String field1, field2;
public void setField1(String field1) {
this.field1 = field1;
}
public void setField2(String field2) {
this.field2 = field2;
}
}