设计模式-建造者模式

Posted 女友在高考

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式-建造者模式相关的知识,希望对你有一定的参考价值。

建造者模式

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

使用场景:一些基本部件不变,但是组合经常变化。就比如肯德基套餐很多样,但是都是可乐、汉堡、鸡腿、鸡翅等组成的。

使用实例:Java中的StringBuilder

建造者模式的主要角色如下:

  • 产品 (Product) :要创建的复杂对象
  • 抽象建造者(Builder):提供创建产品各个子部件的抽象方法,通常还包含一个返回复杂产品的方法
  • 具体建造者(Concrete): 实现Builder接口,完成复杂产品的各个部件的具体创建方法
  • 指挥者(Director):它调用建造者对象中的方法进行产品创建。

代码示例:

public abstract class Builder {

    protected Product product=new Product();

    abstract void buildPartA();
    abstract void buildPartB();
    abstract void buildPartC();

    Product getResult(){
        return product;
    }
}
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部分");
    }

}
public class Director {

    private Builder builder;

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

    public Product construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }
}
public class Product {

    private String partA;
    private String partB;
    private String partC;

    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;
    }

    public String getPartC() {
        return partC;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

    public void show(){
        System.out.println("Product{" +
                "partA=\'" + partA + \'\\\'\' +
                ", partB=\'" + partB + \'\\\'\' +
                ", partC=\'" + partC + \'\\\'\' +
                \'}\');
    }
}

测试代码:

 public static void main(String[] args) {
        Builder builder=new ConcreteBuilder();
        Director director=new Director(builder);
        Product product = director.construct();
        product.show();
    }

以上是关于设计模式-建造者模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之建造者模式

建造者模式(Builder)

设计模式 创建者模式 -- 建造者模式

设计模式从青铜到王者第八篇:创建型模式之建造者模式(BuilderPattern)

Java设计模式-建造者模式

设计模式:学习笔记——建造者模式