创建型设计模式之建造者模式

90 阅读2分钟

1. 建造者模式

建造者模式(Builder Pattern)也叫做生成器模式,定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式中有四个角色:

  • Product 产品类。
  • Builder 抽象建造者。
  • ConcreteBuilder 具体建造者
  • Director 导演类

1.1. 产品类

产品类通常是一个组合或继承(如模板方法)产生的类。

public class Product {
    public void doSomething(){
        //业务处理
    }
}

1.2. 建造者类

1.2.1. 抽象建造者

public abstract class Builder {
    //设置产品的不同部分,以获得不同的产品
    public abstract void setPart();
    //建造产品
    public abstract Product buildProduct();
}

1.2.2. 具体建造者

如果有多个产品类,就有多个具体的建造者,而且这多个产品类具有相同接口或抽象类。

public class ConcreteProduct extends Builder{
    private Product product = new Product();
    //设置产品零件
    @Override
    public void setPart() {
        //不同产品内的逻辑处理,对product进行操作
    }
    //组建一个产品
    @Override
    public Product buildProduct() {
        return product;
    }
}

1.3. 导演类

导演类起到封装的作用,避免高层模块深入到建造者内部的实现类。在建造者模式比较庞大时,导演类可以有多个。

public class Director {
    private Builder builder = new ConcreteProduct();
    //构建不同的产品
    public Product getProduct(){
        //设置不同的产品内部逻辑
        builder.setPart();
        return builder.buildProduct();
    }
}

2. 建造者模式的应用

建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式的最大不同。

建造者模式最主要的功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗的说就是零件的装配,顺序不同,产生的对象也不同。而工厂方法模式则重点是创建,创建零件是它的主要职责,组装顺序则不是它关注的。