建造者模式是一种创建型设计模式,它允许我们按照步骤或顺序构建复杂对象。**这种模式特别适用于构建包含许多参数的对象。**建造者模式通过一个建造者对象负责构建目标对象,客户端代码可以根据需要灵活地指定要构建的对象的属性。
产品类
首先,我们定义了产品类 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
对象的构建细节。