Java的創建者模式與工廠模式有點類似,不過關注點不同。工廠模式往往只關心你想要的是什麼,而不關心這個東西的具體細節是什麼。相對而言創建模式則是關心這個東西的具體細節的創建。拿創造人物來說,我們關心的不僅是創造一個人物,還要關心他的性別,膚色和名字,則可以使用創建者模式。
程式實例如下所示:
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(Stringsex) { ex. ; }}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; }}
測試類別如下:
package builder;public class Main { public static void main(String[] args) { Race race = new RaceBuilder().builder().setName("張三").setSex("男").setSkinColor("白色" ).create(); }}