建造者模式
建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品
角色
Builder抽象建造者
buildPartX
getResult
ConcreteBuilder具体建造者
Product产品角色
Director指挥者
复杂对象
指包含多个成员属性的对象,它们称为部件或零件
比如汽车,包含方向盘、发动机、轮胎等

1.角色类

package Builder;

/**
* Created by e550 on 2016/10/1.
*/
public class Actor {
private String type; // 角色
private String sex; // 性别
private String face; // 脸型
private String costume; // 服装
private String hairstyle; // 发型
public void setType(String type) {
this.type = type;
}
public void setSex(String sex) {
this.sex = sex;
} public void setFace(String face) {
this.face = face;
} public void setCostume(String costume) {
this.costume = costume;
} public void setHairstyle(String hairstyle) {
this.hairstyle = hairstyle;
}
public String getType() {
return this.type;
}
public String getSex() {
return this.sex;
}
public String getFace() {
return this.face;
} public String getCostume() {
return this.costume;
} public String getHairstyle() {
return this.hairstyle;
} }

2.角色构造抽象类

package Builder;

/**
* Created by jim on 2016/10/3.
*/
abstract class ActorBuilder {
protected Actor actor = new Actor();
public abstract void buildType();
public abstract void buildSex();
public abstract void buildFace();
public abstract void buildCostume();
public abstract void buildHairstyle();
public Actor createActor() {
return actor;
}
}

3.角色构造具体类,英雄角色

package Builder;

/**
* Created by e550 on 2016/10/3.
*/
public class HeroBuilder extends ActorBuilder{
public void buildType() {
actor.setType("英雄");
} public void buildSex() {
actor.setSex("男");
} public void buildFace() {
actor.setFace("英俊");
} public void buildCostume() {
actor.setCostume("盔甲");
} public void buildHairstyle() {
actor.setHairstyle("飘逸");
}
}

天使角色

package Builder;

/**
* Created by e550 on 2016/10/3.
*/
public class AngelBuilder extends ActorBuilder{
public void buildType() {
actor.setType("天使");
} public void buildSex() {
actor.setSex("女");
} public void buildFace() {
actor.setFace("漂亮");
} public void buildCostume() {
actor.setCostume("白裙");
} public void buildHairstyle() {
actor.setHairstyle("披肩长发");
}
}

恶魔角色

package Builder;

/**
* Created by e550 on 2016/10/3.
*/
public class DevilBuilder extends ActorBuilder{
public void buildType() {
actor.setType("恶魔");
} public void buildSex() {
actor.setSex("妖");
} public void buildFace() {
actor.setFace("丑陋");
} public void buildCostume() {
actor.setCostume("黑衣");
} public void buildHairstyle() {
actor.setHairstyle("光头");
}
}

4.角色控制器

package Builder;

/**
* Created by e550 on 2016/10/3.
*/
public class ActorController {
public Actor construct(ActorBuilder ab) {
Actor actor;
ab.buildType();
ab.buildSex();
ab.buildFace();
ab.buildCostume();
ab.buildHairstyle();
actor = ab.createActor();
return actor;
}
}

5.客户端执行

package Builder;

/**
* Created by e550 on 2016/10/3.
*/
public class Client {
public static void main(String args[]) {
ActorBuilder ab;
ab = new AngelBuilder(); ActorController ac = new ActorController(); Actor actor;
actor = ac.construct(ab); System.out.println("类型:" + actor.getType());
System.out.println("性别:" + actor.getSex());
System.out.println("面容:" + actor.getFace());
System.out.println("服装:" + actor.getCostume());
System.out.println("发型:" + actor.getHairstyle());
}
}

执行结果

类型:天使

性别:女

面容:漂亮

服装:白裙

发型:披肩长发

最新文章

  1. pip安装使用详解(转)
  2. 从零自学Hadoop(12):Hadoop命令中
  3. WordPress基础:Gravatar头像修正
  4. xamarin误删vEthernet(internal Ethernet Port Windows Phone Emulator) 网络设备的处理。
  5. coreseek安装遇到的错误
  6. 【转】iOS超全开源框架、项目和学习资料汇总
  7. NLP的两种工具的java版使用:复旦FudanNLP,中科院计算所ICTCLAS2013
  8. python 编码与解码 decode解码 encode 编码
  9. Monkey学习(3)如何在Android模拟器中安装apk
  10. POJ 1321 棋盘问题 --- DFS
  11. IE按F12,开发者工具已经在最低点,那么国家就不会出错
  12. 使用bootstrap响应式布局——手机屏幕中横向滚动显示标签页选项
  13. 光环国际的PRINCE2培训时间
  14. Binder的工作原理浅析
  15. Java面试宝典笔记录
  16. 利用百度接口进行人脸识别并保存人脸jpg文件
  17. javascript DOM编程艺术(检测与性能优化)
  18. <自动化测试方案_4>第四章、选型标准
  19. scrapy---反爬虫
  20. Python之路(第三十篇) 网络编程:socket、tcp/ip协议

热门文章

  1. 0x11 栈
  2. 剑指offer——02替换空格(Python3)
  3. 7.gcc的使用
  4. android 方案源码下载repo同步遇到的问题
  5. python2 与 python3 语法区别--转
  6. T7316 yyy的最大公约数(者)
  7. python小项目之头像右上角加数字
  8. Codeforces 993A. Two Squares(暴力求解)
  9. 【SQL优化】SQL优化工具
  10. CommonsMultipartFile---用Spring实现文件上传