简易的设计模式——建造者模式

定义

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

四个角色

  • 产品类(Product):有模板方法和基本方法。
  • 抽象建造者(Builder):规范产品的组建,一般是由子类实现。
  • 具体建造者(ConcreteBuilder):实现抽象类定义的所有方法,并返回一个组建好的对象。
  • 导演类(Director):负责安排已有模块的顺序。

代码实现

产品类 Product.java

public class Product {
    public void dosomething(){
        //实现一些业务
    }
}

抽象建造者 Builder.java

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

具体建造者 ConcreteBuilder.java

public class ConcreteBuilder extends Builder {

    private Product product = new Product();

    public void setPart(){
        //产品内的逻辑处理
    }

    public Product buildProduct(){
        return product;
    }

}

导演 Director.java

public class Director {
    private Builder builder = new ConcreteBuilder();
    //构建不同的产品
    public Product getAProduct(){
        builder.setPart();
        //生产不同的产品。
        return builder.buildProduct();
    }
}

建造者模式的优点

  • 封装性:客户端不需要知道内部的组成细节。
  • 建造者独立:容易扩展,不同类型的建造者相互独立,利于扩展。
  • 便于控制细节风险:由于具体的建造者是独立,因此可以对建造过程逐步细化,而不对其他的模块产生影响。

使用场景

  • 方法相同,执行的顺序不同,产生不同的事件结果时,可以采用的建造者模式。
  • 多个部件装配到同一个对象中,但又希望产生的运行结果又不相同的时候。
  • 产品类型非常复杂,或者产品类中得不同的顺序可以来带不同效果的时候。
原文地址:https://www.cnblogs.com/whthomas/p/4452421.html