Java的創(chuàng)建者模式與工廠模式有點(diǎn)類似,不過(guò)關(guān)注點(diǎn)不同。工廠模式往往只關(guān)心你要的是什么,而不關(guān)心這個(gè)東西的具體細(xì)節(jié)是什么。相對(duì)而言創(chuàng)建模式則是關(guān)心這個(gè)東西的具體細(xì)節(jié)的創(chuàng)建。拿創(chuàng)建人物來(lái)說(shuō),我們關(guān)心的不僅是創(chuàng)建一個(gè)人物,還要關(guān)心他的性別,膚色和名字,則可以使用創(chuàng)建者模式。
程序?qū)嵗缦滤荆?/p>
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 我們關(guān)心的不僅僅是創(chuàng)建一個(gè)人物,還要關(guān)心其特征的創(chuàng)建 * */ public class RaceBuilder { private Race race; /** * DOC 創(chuàng)建一個(gè)種族 * * @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 返回這個(gè)創(chuàng)建好的種族 * * @return */ public Race create() { return this .race; } } |
測(cè)試類如下:
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(); } } |