设计模式系列:建造者模式

概念

当要创建的对象相对复杂,可以将复杂对象的创建过程分离成若干过程。此时只要改变不同过程中的参数就可以产生不同的实例。

实现

类图

图片

代码

Builder

1
2
3
4
5
6
7
8
9
10
public interface Builder {

public void buildProductPartA();

public void buildProductPartB();

public void buildProductPartC();

public Product buildProduct();
}

Director

1
2
3
4
5
6
7
8
9
public class Director {

public Product constructProduct(Builder productBuilder){
productBuilder.buildProductPartA();
productBuilder.buildProductPartB();
productBuilder.buildProductPartC();
return productBuilder.buildProduct();
}
}

ProductBuilder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

public class ProductBuilder implements Builder {

private Product product;

@Override
public void buildProductPartA() {

}

@Override
public void buildProductPartB() {

}

@Override
public void buildProductPartC() {

}

@Override
public Product buildProduct() {
return null;
}
}

Product

1
2
3
public class Product {

}

Client

1
2
3
4
5
6
7
public class Client {

public static void main(String[] args) {
Director director = new Director();
director.constructProduct(new ProductBuilder());
}
}

场景

我们看饮料机的工作步骤可以分为 倒入水,倒入饮料剂,制造饮料。定义一个饮料机就可以当做建造饮料的过程。

总结

建造者模式的核心是把类的创建过程分解成一个个过程。每个过程是一个单独的执行流程,可以通过不同参数指定流程的结果。