设计模式 – 建造者模式(Builder Pattern)

内容纲要

建造者模式(Builder Pattern)是一种创建型设计模式,它可以让你构建复杂的对象,同时将其构建过程和表示(内部数据结构)分离。这样,同样的构建过程可以创建具有不同表示的对象。建造者模式对于具有多个可选参数的对象创建过程尤为有用。

“Builder Pattern”通常被翻译成“建造者模式”,但有时也会被称为“生成器模式”。尽管这两个翻译略有不同,但它们实际上指的是同一个设计模式。这种模式的核心思想是将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。这样可以让代码更具可读性和可维护性,同时提高复杂对象创建过程的灵活性。

以下是一个简单的Java实现:

  1. 定义一个产品类,表示最终要创建的对象:
public class Product {
    private String partA;
    private String partB;
    private String partC;

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    public void show() {
        System.out.println("Product has: " + partA + ", " + partB + ", " + partC);
    }
}
  1. 创建一个抽象建造者(Builder)类,定义创建对象各个部分的方法:
public abstract class Builder {
    protected Product product = new Product();

    public abstract void buildPartA();
    public abstract void buildPartB();
    public abstract void buildPartC();

    public Product getResult() {
        return product;
    }
}
  1. 创建具体建造者(Concrete Builder)类,实现抽象建造者定义的方法:
public class ConcreteBuilder extends Builder {

    @Override
    public void buildPartA() {
        product.setPartA("Part A");
    }

    @Override
    public void buildPartB() {
        product.setPartB("Part B");
    }

    @Override
    public void buildPartC() {
        product.setPartC("Part C");
    }
}
  1. 创建一个指挥者(Director)类,用于组织对象的构建过程:
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public Product construct() {
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}
  1. 使用建造者模式创建对象:
public class Main {
    public static void main(String[] args) {
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        Product product = director.construct();
        product.show();
    }
}

运行上述代码,你将看到:

Product has: Part A, Part B, Part C

建造者模式可以让你创建具有不同表示的复杂对象,同时将构建过程与表示分离。当你需要创建具有许多可选参数的对象时,建造者模式可以提供更好的可读性和易用性。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward