Java设计模式之:创建者模式

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

 
  1. package builder;
  2. /**
  3. *
  4. * DOC 种族角色
  5. *
  6. */
  7. public class Race {
  8. private String name;// 名字
  9. private String skinColor;// 肤色
  10. private String sex;// 性别
  11. public String getName() {
  12. return this.name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public String getSkinColor() {
  18. return this.skinColor;
  19. }
  20. public void setSkinColor(String skinColor) {
  21. this.skinColor = skinColor;
  22. }
  23. public String getSex() {
  24. return this.sex;
  25. }
  26. public void setSex(String sex) {
  27. this.sex = sex;
  28. }
  29. }

 
  1. package builder;
  2. /**
  3. *
  4. * DOC 我们关心的不仅仅是创建一个人物,还要关心其特征的创建
  5. *
  6. */
  7. public class RaceBuilder {
  8. private Race race;
  9. /**
  10. * DOC 创建一个种族
  11. *
  12. * @return
  13. */
  14. public RaceBuilder builder() {
  15. this.race = new Race();
  16. return this;
  17. }
  18. /**
  19. * DOC 取名字
  20. *
  21. * @return
  22. */
  23. public RaceBuilder setName(String name) {
  24. this.race.setName(name);
  25. return this;
  26. }
  27. /**
  28. * DOC 选择性别
  29. *
  30. * @return
  31. */
  32. public RaceBuilder setSex(String sex) {
  33. this.race.setSex(sex);
  34. return this;
  35. }
  36. /**
  37. * DOC 选择肤色
  38. *
  39. * @return
  40. */
  41. public RaceBuilder setSkinColor(String skinColor) {
  42. this.race.setSkinColor(skinColor);
  43. return this;
  44. }
  45. /**
  46. *
  47. * DOC 返回这个创建好的种族
  48. *
  49. * @return
  50. */
  51. public Race create() {
  52. return this.race;
  53. }
  54. }

测试类:

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

你可能感兴趣的:(java设计模式)