什么是建造者模式?
建造者模式是一种创建型设计模式,旨在将一个复杂对象的构建过程和其表示分离,使得同样的构建过程可以创建不同的表示。通过将构造过程分解为多个步骤,建造者模式允许客户端程序在构建过程中指定对象的类型和内容。
建造者模式的结构
建造者模式包含以下几个主要角色:
- 产品(Product):表示被构建的复杂对象,包含多个部分。
- 抽象建造者(Builder):声明构建产品各个部分的抽象接口,通常包括创建和组装部件的方法。
- 具体建造者(ConcreteBuilder):实现抽象建造者接口,负责实际构建产品的各个部分。
- 指挥者(Director):调用具体建造者中的方法,按照特定的顺序构建产品。
实例:构建汽车对象
1. 定义产品
public class Car {
private String brand;
private String model;
private String color;
// 省略 getter 和 setter 方法
}
2. 定义抽象建造者接口
public interface CarBuilder {
void buildBrand(); // 构建品牌
void buildModel(); // 构建型号
void buildColor(); // 构建颜色
Car getResult(); // 获取构建结果
}
3. 实现具体建造者
public class SedanCarBuilder implements CarBuilder {
private Car car = new Car();
@Override
public void buildBrand() {
car.setBrand("Toyota");
}
@Override
public void buildModel() {
car.setModel("Camry");
}
@Override
public void buildColor() {
car.setColor("Silver");
}
@Override
public Car getResult() {
return car;
}
}
4. 实现指挥者
public class CarDirector {
public Car construct(CarBuilder builder) {
builder.buildBrand();
builder.buildModel();
builder.buildColor();
return builder.getResult();
}
}
5. 客户端使用
public class Client {
public static void main(String[] args) {
CarBuilder sedanCarBuilder = new SedanCarBuilder();
CarDirector director = new CarDirector();
Car sedanCar = director.construct(sedanCarBuilder);
// 现在,sedanCar 包含了按照指定顺序构建的汽车对象
}
}
总结
通过建造者模式,我们可以将复杂对象的构建过程和表示分离,使得系统更加灵活且易于扩展。在实际应用中,建造者模式常用于构建具有多个组成部分且构建过程相对复杂的对象,例如各类配置对象、文档对象等。