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

本文通过一个具体示例详细介绍了创建者模式的实现方式及其与工厂模式的区别。在创建人物角色时,不仅关注创建过程,还关注角色的具体特征,如姓名、性别和肤色等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  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. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值