建造者模式

建造者模式

viEcho Lv5

具体代码见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. 允许你使用相同的创建过程创建不同种类的对象

总结:建造者模式是一种创建型设计模式,它允许你分步骤构造复杂对象。这种模式特别适用于当对象的构造过程需要多个步骤时

  • Title: 建造者模式
  • Author: viEcho
  • Created at : 2024-01-10 00:00:00
  • Updated at : 2025-02-21 18:23:10
  • Link: https://viecho.github.io/2024/0110/builder-mode.html
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments