具体代码见LocalDemo之shejimoshi
模块
就是我们链式编程的各种builder的实现;它将产品和构建过程做了个拆分,例如我们创建一个电脑,那么需要组装显示屏,需要组装主机;主要做法是抽象构建过程,再由一个实现类来实现抽象类,通过各种builder链式调用构建出想要的产品;
如上例子的实现
1 2 3 4 5 6 7 8 9
| src/ ├── main/ │ ├── java/ │ │ └── local/demo/test/shejimoshi/builder/ │ │ ├── A1Builder.java │ │ ├── Builder.java │ │ ├── ClentMain.java │ │ ├── Director.java │ │ └── Product.java
|
1.定义产品
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 26
| public class Product { private String part1; private String part2; private String part3;
public void setPart1(String part1) { this.part1 = part1; }
public void setPart2(String part2) { this.part2 = part2; }
public void setPart3(String part3) { this.part3 = part3; }
@Override public String toString() { return "Product{" + "part1='" + part1 + '\'' + ", part2='" + part2 + '\'' + ", part3='" + part3 + '\'' + '}'; } }
|
2.定义构建接口
1 2 3 4 5 6
| public interface Builder { void buildPart1(String part1); void buildPart2(String part2); void buildPart3(String part3); Product getResult(); }
|
3.实现建造者接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class A1Builder implements Builder { private Product product = new Product();
@Override public void buildPart1(String part1) { product.setPart1(part1); }
@Override public void buildPart2(String part2) { product.setPart2(part2); }
@Override public void buildPart3(String part3) { product.setPart3(part3); }
@Override public Product getResult() { return product; } }
|
4.组织构建过程
1 2 3 4 5 6 7 8 9 10 11 12 13
| public class Director { private Builder builder;
public Director(Builder builder) { this.builder = builder; }
public void construct() { builder.buildPart1("Part1"); builder.buildPart2("Part2"); builder.buildPart3("Part3"); } }
|
5.调用示例
1 2 3 4 5 6 7 8 9
| public class ClientMain { public static void main(String[] args) { Builder builder = new A1Builder(); Director director = new Director(builder); director.construct(); Product product = builder.getResult(); System.out.println(product); } }
|
建造者模式的作用是:1. 封装一个复杂对象的构造过程;2. 允许你通过一个简单的接口创建一个复杂的对象;3. 允许你使用相同的创建过程创建不同种类的对象
总结:建造者模式是一种创建型设计模式,它允许你分步骤构造复杂对象。这种模式特别适用于当对象的构造过程需要多个步骤时