Java設(shè)計(jì)模式之:創(chuàng)建者模式
創(chuàng)建者模式和工廠模式有點(diǎn)類似,不過(guò)關(guān)注點(diǎn)不同。工廠模式往往只關(guān)心你要的是什么,二不關(guān)心這個(gè)東西的具體細(xì)節(jié)是什么。而創(chuàng)建模式則關(guān)心的是這個(gè)東西的具體細(xì)節(jié)的創(chuàng)建。拿創(chuàng)建人物來(lái)說(shuō),我們關(guān)心的不僅是創(chuàng)建一個(gè)人物,還要關(guān)心他的性別,膚色和名字,則可以使用創(chuàng)建者模式:
- 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è)試類:
- package builder;
- public class Main {
- public static void main(String[] args) {
- Race race = new RaceBuilder().builder().setName("張三").setSex("男").setSkinColor("白色").create();
- }
- }
原文鏈接:http://blog.csdn.net/a107494639/article/details/7568047
【編輯推薦】