Java设计模式之创建者模式简介

时间:2021-10-24 15:50:27

Java的创建者模式与工厂模式有点类似,不过关注点不同。工厂模式往往只关心你要的是什么,而不关心这个东西的具体细节是什么。相对而言创建模式则是关心这个东西的具体细节的创建。拿创建人物来说,我们关心的不仅是创建一个人物,还要关心他的性别,肤色和名字,则可以使用创建者模式。

程序实例如下所示:

?
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package builder;
/**
 *
 * DOC 种族角色
 *
 */
public class Race {
  private String name;// 名字
  private String skinColor;// 肤色
  private String sex;// 性别
  public String getName() {
    return this.name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getSkinColor() {
    return this.skinColor;
  }
  public void setSkinColor(String skinColor) {
    this.skinColor = skinColor;
  }
  public String getSex() {
    return this.sex;
  }
  public void setSex(String sex) {
    this.sex = sex;
  }
}
package builder;
/**
 *
 * DOC 我们关心的不仅仅是创建一个人物,还要关心其特征的创建
 *
 */
public class RaceBuilder {
  private Race race;
  /**
   * DOC 创建一个种族
   *
   * @return
   */
  public RaceBuilder builder() {
    this.race = new Race();
    return this;
  }
  /**
   * DOC 取名字
   *
   * @return
   */
  public RaceBuilder setName(String name) {
    this.race.setName(name);
    return this;
  }
  /**
   * DOC 选择性别
   *
   * @return
   */
  public RaceBuilder setSex(String sex) {
    this.race.setSex(sex);
    return this;
  }
  /**
   * DOC 选择肤色
   *
   * @return
   */
  public RaceBuilder setSkinColor(String skinColor) {
    this.race.setSkinColor(skinColor);
    return this;
  }
  /**
   *
   * DOC 返回这个创建好的种族
   *
   * @return
   */
  public Race create() {
    return this.race;
  }
}

测试类如下:

?
1
2
3
4
5
6
package builder;
public class Main {
  public static void main(String[] args) {
    Race race = new RaceBuilder().builder().setName("张三").setSex("男").setSkinColor("白色").create();
  }
}