建造者模式,把Director指挥者和抽象建造者结合后,客户端该怎么实现产品的建造?

具体的产品:

//具体的产品
public class Product {

    //有ABCD多个部件
    private String buildA;
    private String buildB;
    private String buildC;
    private String buildD;

    public String getBuildA() {
        return buildA;
    }

    public void setBuildA(String buildA) {
        this.buildA = buildA;
    }

    public String getBuildB() {
        return buildB;
    }

    public void setBuildB(String buildB) {
        this.buildB = buildB;
    }

    public String getBuildC() {
        return buildC;
    }

    public void setBuildC(String buildC) {
        this.buildC = buildC;
    }

    public String getBuildD() {
        return buildD;
    }

    public void setBuildD(String buildD) {
        this.buildD = buildD;
    }

    @Override
    public String toString() {
        return "Product{" +
                "buildA='" + buildA + '\'' +
                ", buildB='" + buildB + '\'' +
                ", buildC='" + buildC + '\'' +
                ", buildD='" + buildD + '\'' +
                '}';
    }
}

和指挥者结合后的抽象建造者:

//改造后的抽象建造者
public abstract class NewBuilder {

    protected static Product product = new Product();

    //具体产品的各个子部件的抽象方法
    abstract void buildA();//部件A
    abstract void buildB();//部件B
    abstract void buildC();//部件C
    abstract void buildD();//部件B

    //返回具体产品的方法
    abstract Product getProduct();

    //把导演类中的construct()方法合并到抽象建造者类中
    public static Product construct(NewBuilder newBuilder){
        newBuilder.buildA();
        newBuilder.buildB();
        newBuilder.buildC();
        newBuilder.buildD();

        return product;
    }

}

具体建造者:

//具体建造者,实现抽象建造者,完成复杂产品的各个部件的具体创建方法
public class Worker extends Builder{

   private Product product;  //提升作用域

   //通过具体建造者的构造器生成具体产品的对象
   public Worker(){
       product = new Product();
   }

    @Override
    void buildA() {
        product.setBuildA("完成部件A");
        System.out.println("完成部件A");
    }

    @Override
    void buildB() {
        product.setBuildB("完成部件B");
        System.out.println("完成部件B");
    }

    @Override
    void buildC() {
        product.setBuildC("完成部件C");
        System.out.println("完成部件C");
    }

    @Override
    void buildD() {
        product.setBuildD("完成部件D");
        System.out.println("完成部件D");
    }

    @Override
    Product getProduct() {
        System.out.println("完成产品ABCD的创建");
        return product;
    }
}

客户端:求大佬指点下面该怎么实现

public class NewClient {
    public static void main(String[] args) {

        

    }
}

 

下面是我的理解,供参考:

package builderpattern;
public class NewClient {
    public static void main(String[] args) {
 
        //  https://baike.baidu.com/item/%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F/3229729?fr=aladdin
        //  创建建造者
        Worker wk = new Worker();
        
        // 建造产品
        wk.construct(wk);
        Product p =  wk.getProduct();  // 获取产品
        
        // 获取四个产品信息
        System.out.println("产品A为:"+p.getBuildA());
        System.out.println("产品B为:"+p.getBuildB());
        System.out.println("产品C为:"+p.getBuildC());
        System.out.println("产品D为:"+p.getBuildD());
        
        
    }
}

img