建造者模式UML类图:

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