建造者模式是一种创建型设计模式,它允许我们按照步骤或顺序构建复杂对象。**这种模式特别适用于构建包含许多参数的对象。**建造者模式通过一个建造者对象负责构建目标对象,客户端代码可以根据需要灵活地指定要构建的对象的属性。
产品类
首先,我们定义了产品类 Product,它包含了一些属性:
public class Product {
    private String part1;
    private String part2;
    private String part3;
    public void setPart1(String part1) {
        this.part1 = part1;
    }
    public void setPart2(String part2) {
        this.part2 = part2;
    }
    public void setPart3(String part3) {
        this.part3 = part3;
    }
    @Override
    public String toString() {
        return "Product{" +
                "part1='" + part1 + '\'' +
                ", part2='" + part2 + '\'' +
                ", part3='" + part3 + '\'' +
                '}';
    }
}建造者类
然后,我们定义了建造者类 ProductBuilder,它负责构建 Product 对象:
public class ProductBuilder {
    private Product product;
    public ProductBuilder() {
        this.product = new Product();
    }
    public ProductBuilder withPart1(String part1) {
        product.setPart1(part1);
        return this;
    }
    public ProductBuilder withPart2(String part2) {
        product.setPart2(part2);
        return this;
    }
    public ProductBuilder withPart3(String part3) {
        product.setPart3(part3);
        return this;
    }
    public Product build() {
        return product;
    }
}客户端代码
最后,我们可以在客户端代码中使用建造者模式来构建 Product 对象:
public class Client {
    public static void main(String[] args) {
        Product product = new ProductBuilder()
                .withPart1("Part 1")
                .withPart2("Part 2")
                .withPart3("Part 3")
                .build();
        System.out.println(product);
    }
}示例说明
- Product类是要构建的对象,它具有一些属性,例如- part1、- part2和- part3。
- ProductBuilder类负责构建- Product对象。它提供了一系列的- withXxx()方法,用于设置- Product的属性,并且返回- ProductBuilder实例以支持方法的链式调用。最后,通过- build()方法返回构建完成的- Product对象。
- 使用建造者模式,客户端代码可以根据需要选择设置哪些属性,而不需要关心 Product对象的构建细节。