目录
1.什么是建造者?
建造者模式是一种对象创建型设计模式,它的目的是通过将对象的构造过程拆分成多个简单的部分并将它们组合起来构建一个复杂的对象。建造者模式关注的是对象创建的过程,而不是对象的细节。
2.实现步骤
在建造者模式中,我们通常会实现一个名为建造者(Builder)的接口和一个名为指挥者(Director)的类。建造者接口定义了创建复杂对象所需的所有方法,并且由实现类来实现这些方法。指挥者类则负责将这些方法组合在一起构造一个复杂对象。
/**
* @author LJL
* @version 1.0
* @title Product
* @date 2023/6/9 15:37
* @description 产品类
*/
public class Product {
private String partA; // 部件A
private String partB; // 部件B
private String partC; // 部件C
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("产品组成部分:PartA=" + partA + ", PartB=" + partB + ", PartC=" + partC);
}
}
/**
* @author LJL
* @version 1.0
* @title Builder
* @date 2023/6/9 15:38
* @description 抽象建造者类
* 定义了创建产品所需的各个部件的接口
*/
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;
}
}
/**
* @author LJL
* @version 1.0
* @title ConcreteBuilder
* @date 2023/6/9 15:39
* @description 具体建造者类
*/
public class ConcreteBuilder extends Builder{
@Override
public void buildPartA() {
product.setPartA("A");
}
@Override
public void buildPartB() {
product.setPartB("B");
}
@Override
public void buildPartC() {
product.setPartC("C");
}
}
/**
* @author LJL
* @version 1.0
* @title Director
* @date 2023/6/9 15:41
* @description 指挥类
* 构建产品的各个部分
*/
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
/**
* @author LJL
* @version 1.0
* @title Client
* @date 2023/6/9 15:41
* @description 客户端类
*/
public class Client {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();
product.show();
}
}
3.适用场景
当我们需要创建的对象包含多个部分,且各个部分的实现细节不同,而且一些部分之间存在复杂的组成关系时,按照一定的顺序或逻辑来创建时,建造者模式就比较适用