在建造者模式中,指导者是负责控制具体建造者的对象,它根据具体建造者的执行顺序来组织建造过程。指导者知道具体建造者的接口,但不知道具体建造者的实现细节。
下面是一个包含代码示例的解决方法:
首先,定义产品类Product,具体建造者类ConcreteBuilder和指导者类Director:
// 产品类
class Product {
private String part1;
private String part2;
public String getPart1() {
return part1;
}
public void setPart1(String part1) {
this.part1 = part1;
}
public String getPart2() {
return part2;
}
public void setPart2(String part2) {
this.part2 = part2;
}
public void show() {
System.out.println("Part1: " + part1);
System.out.println("Part2: " + part2);
}
}
// 抽象建造者类
abstract class Builder {
public abstract void buildPart1();
public abstract void buildPart2();
public abstract Product getResult();
}
// 具体建造者类
class ConcreteBuilder extends Builder {
private Product product = new Product();
public void buildPart1() {
product.setPart1("Part1");
}
public void buildPart2() {
product.setPart2("Part2");
}
public Product getResult() {
return product;
}
}
// 指导者类
class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void construct() {
builder.buildPart1();
builder.buildPart2();
}
}
然后,我们可以使用以下代码来演示建造者模式的使用:
public class Main {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();
product.show();
}
}
在这个例子中,指导者类Director与具体建造者类ConcreteBuilder打交道,指导者根据建造者的执行顺序来组织建造过程。最后,我们通过建造者类获取构建好的产品对象,并展示产品的信息。