第一步:创建一个产品,及产品的各个部件;
public class Product {
List<String> parts = new ArrayList<String>();
public void addPart(String part) {
if (StringUtils.isNotBlank(part)) {
parts.add(part);
}
}
public void showParts() {
for (String part : parts) {
System.out.println(part);
}
}
}
第二步:创建一个抽象建造者,把产品的各个部件分离出来分别构建
public abstract class AbstractBuilder {
public abstract void buildA();
public abstract void buildB();
public abstract Product getProduct();
}
第三步:创建具体建造者
public class ConcreteBuilder1 extends AbstractBuilder {
private Product product;
@Override
public void buildA() {
product.addPart("部件A");
}
@Override
public void buildB() {
product.addPart("部件B");
}
@Override
public Product getProduct() {
return product;
}
}
public class ConcreteBuilder2 extends AbstractBuilder {
private Product product;
@Override
public void buildA() {
product.addPart("部件C");
}
@Override
public void buildB() {
product.addPart("部件D");
}
@Override
public Product getProduct() {
return product;
}
}
第四步:创建指挥者
public class Director {
public void control(AbstractBuilder builder) {
builder.buildA();
builder.buildB();
}
}
第五步:指挥者指挥创建者创建产品,完成不同产品创建
public static void main(String[] args) {
Director director = new Director();
AbstractBuilder builder1 = new ConcreteBuilder1();
AbstractBuilder builder2 = new ConcreteBuilder2();
director.control(builder1);
Product p1 = builder1.getProduct();
p1.showParts();
director.control(builder2);
Product p2 = builder2.getProduct();
p2.showParts();
}