第六章 建造者模式

46 阅读1分钟

定义

将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

结构

  • Builder(抽象建造者)
  • 创建复杂对象各个部件
  • getResult 返回复杂对象
  • ConcreteBuilder(具体建造者)

实现各个部件的具体构造与装配方法

  • product(产品)

复杂对象

  • Director(指挥者)
  • 安排建造次序
  • 与抽象建造者存在关联关系,可以在其construct()调用建造者对象部件构造与装配方法。

实现

Builder

package designpatterns.builder.simple;

public abstract  class Builder {
    
    protected Product product = new Product();
    
    public abstract void builderPartA();
    
    public abstract  void builderPartB();
    
    public Product getResult(){
        return this.product;
    }
}

ConcreteBuilder

package designpatterns.builder.simple;

public class ConcreteBuilder extends Builder {
    @Override
    public void builderPartA() {
        product.setPartA("a");
    }

    @Override
    public void builderPartB() {
        product.setPartB("b");
    }
}

Product

package designpatterns.builder.simple;

public  class Product {

    private String partA;

    private String partB;



    public String getPartA() {
        return partA;
    }

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public String getPartB() {
        return partB;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }
}

Director

package designpatterns.builder.simple;

public class Director {

    private Builder builder;

    public Director(Builder builder){
        this.builder = builder;
    }

    public void setBuilder(Builder builder){
        this.builder = builder;
    }
    public Product construct(){
        builder.builderPartA();
        builder.builderPartB();
        return builder.getResult();
    }
}

优缺点及适用环境