核心思想
将对象的构建与其表示分离,这样通过相同的构建过程可以创建不同的表示。
具体实现
将构建与表示分离,分为产品,建造,生产三个部分。
构建
生产模板
首先我们需要一个生产的模板,这是我们需要的最终产品的抽象,我们以一个抽象类表示,我们的最终产品是这个类的继承实现。
1 | public abstract class Model { |
抽象生产线
除了产品的模板外,我们还需要一个通用的组装生产线。对不同的产品由不同的生产线生产,但是它们拥有相同的生产线抽象。
1 | public abstract class Builder { |
表示
具体产品
具体的产品表示,假设有两种产品。
1 | public class Product1 extends Model { |
具体生产线
再根据不同的产品需要生成具体的两条生产线。
1 | //产品1的生产线 |
建造过程
接下来就是具体的生产过程了,我们将其封装到一个类中方便调用。
1 | public class Factory{ |
简单的体验一下
1 | public static void main(String[] args) { |
特点
与工厂模式与抽象工厂相似,这一模式具有很好的封装性,保证我们可以在不知道目标内部细节的情况下建立产品。由于每个具体的生产建造类之间是相互独立的,所以具有很好的外部扩展性,各个模块之间具有独立性,相互之间不会产生影响。除此之外,建造者模式相较于工厂方法突出强调了产品类中函数调用的顺序,这是其比较重要的特点。