建造者模式UML类图:

Product :代表要构建的复杂对象,包含一个parts列表来存储构建的部件,并有add和show方法来添加部件和展示产品
Builder:是抽象建造者角色,定义了构建产品的方法,并返回自身以支持链式调用
ConcreteBuilder:是具体建造者角色,实现了Builder中定义的方法,构建产品的具体部分
Director:是指挥者角色,负责安排构建过程,并使用Builder来构建产品
ConcreteBuilder:继承自Builder。Director:使用Builder来构建产品
一、产品角色(Product)
import java.util.ArrayList;
import java.util.List;public class Product {private List<String> parts;public Product() {this.parts = new ArrayList<>();}public void add(String part) {parts.add(part);}public void show() {System.out.println("------------");for (String part : parts) {System.out.println(part);}System.out.println("------------");}
}
二、抽象建造者角色(Builder)
public abstract class Builder {protected Product product = new Product();public abstract Builder buildPartA();public abstract Builder buildPartB();public Product build() {return product;}
}
三、具体建造者角色(ConcreteBuilder)
public class ConcreteBuilder extends Builder {@Overridepublic Builder buildPartA() {product.add("PartA");return this;}@Overridepublic Builder buildPartB() {product.add("PartB");return this;}
}
四、指挥者角色(Director)
public class Director {private Builder builder;public Director(Builder builder) {this.builder = builder;}public void construct() {builder.buildPartA().buildPartB();}public Product getProduct() {return builder.build();}
}
五、测试
public class Client {public static void main(String[] args) {Director director = new Director(new ConcreteBuilder());director.construct();Product product = director.getProduct();product.show();}
}