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

开发 后端
创建者模式和工厂模式有点类似,不过关注点不同。工厂模式往往只关心你要的是什么,二不关心这个东西的具体细节是什么。而创建模式则关心的是这个东西的具体细节的创建。

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

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

 

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

测试类:

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

原文链接:http://blog.csdn.net/a107494639/article/details/7568047

【编辑推荐】

  1. Java数据结构:栈的实现
  2. Java protobuf框架使用向导
  3. Java端通过CXF调用.NET端服务
  4. Java线程池的原理及几类线程池的介绍
  5. Java中的异常对程序效率有无影响
责任编辑:林师授 来源: a107494639的博客
相关推荐

2020-12-01 07:16:05

重学设计模式

2021-01-21 05:34:14

设计模式建造者

2021-07-08 11:28:43

观察者模式设计

2010-05-06 08:44:37

调解者模式

2021-10-26 00:21:19

设计模式建造者

2020-10-20 13:33:00

建造者模式

2020-11-05 09:38:07

中介者模式

2023-11-02 21:11:11

JavaScript设计模式

2020-08-21 07:23:50

工厂模式设计

2012-05-16 17:22:11

Java设计模式

2020-10-26 08:45:39

观察者模式

2011-11-17 16:03:05

Java工厂模式Clojure

2012-02-29 09:41:14

JavaScript

2021-06-09 08:53:34

设计模式策略模式工厂模式

2015-09-08 13:39:10

JavaScript设计模式

2012-01-13 15:59:07

2021-12-24 07:50:45

责任链模式设计

2023-09-04 13:14:00

装饰器设计模式

2021-06-29 08:54:23

设计模式代理模式远程代理

2021-06-16 08:56:06

模版方法模式设计模式行为型设计模式
点赞
收藏

51CTO技术栈公众号