简介:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

目的:

总结:使得对象的构建与表示分离        CreateHuman和BuilderServiceImpl分离

组成:构建器, 表示接口,接口实现

1,基础类

package com.design.o.builder;
/*** 人体构造*/
public class Human {private String userName;private String head; //头private String body; //身体private String hand; //手private String foot; //脚public Human(String userName) {super();this.userName = userName;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getHead() {return head;}public void setHead(String head) {this.head = head;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public String getHand() {return hand;}public void setHand(String hand) {this.hand = hand;}public String getFoot() {return foot;}public void setFoot(String foot) {this.foot = foot;}@Overridepublic String toString() {return userName;}}

2,表示接口

package com.design.o.builder;
/*** 建造者接口*/
public interface BuilderService {void createHuman(String userName);Human getHuman();void createHead();void createBody();void createHand();void createFoot();}

3,表示接口实现

package com.design.o.builder;public abstract class BuilderServiceImpl implements BuilderService {private Human human;protected String bodyType;@Overridepublic void createHuman(String userName) {human = new Human(userName);}@Overridepublic Human getHuman() {try{return human;}finally{human = null;}}@Overridepublic void createHead() {printInfo("head");human.setHand(bodyType + "head");}@Overridepublic void createBody() {printInfo("body");human.setBody(bodyType + "body");}@Overridepublic void createHand() {printInfo("hand");human.setHand(bodyType + "hand");}@Overridepublic void createFoot() {printInfo("foot");human.setFoot(bodyType + "foot");}private void printInfo(String info){System.out.println("创建  - "+bodyType+"- 用户: " + human.getUserName() + " 的" + info);}
}

package com.design.o.builder;
/*** 偏胖型 - 用户创建 */
public class FatBuilderServiceImpl extends BuilderServiceImpl {private static final String BODY_TYPE = "偏胖型";public FatBuilderServiceImpl() {super.bodyType = BODY_TYPE;}}

package com.design.o.builder;
/*** 偏瘦型 - 用户创建 */
public class ThinBuilderServiceImpl extends BuilderServiceImpl {private static final String BODY_TYPE = "偏瘦型";public ThinBuilderServiceImpl(){super.bodyType = BODY_TYPE;}}

4,构建器

package com.design.o.builder;
/*** 建造者模式*/
public class CreateHuman {public Human createHuman(BuilderService builderService, String userName){builderService.createHuman(userName);builderService.createHead();builderService.createBody();builderService.createHand();builderService.createFoot();return builderService.getHuman();}
}

5,Main

package com.design.o.builder;
/*** 建造者模式* * 目的: 使得对象的构建与表示分离        CreateHuman和BuilderServiceImpl分离*/
public class MainTest {public static void main(String[] args) {CreateHuman human = new CreateHuman();System.out.println(human.createHuman(new FatBuilderServiceImpl(), "小胖子"));;System.out.println(human.createHuman(new ThinBuilderServiceImpl(), "小瘦子"));;}}

6,Result

创建  - 偏胖型- 用户: 小胖子 的head
创建  - 偏胖型- 用户: 小胖子 的body
创建  - 偏胖型- 用户: 小胖子 的hand
创建  - 偏胖型- 用户: 小胖子 的foot
小胖子
创建  - 偏瘦型- 用户: 小瘦子 的head
创建  - 偏瘦型- 用户: 小瘦子 的body
创建  - 偏瘦型- 用户: 小瘦子 的hand
创建  - 偏瘦型- 用户: 小瘦子 的foot
小瘦子

转载于:https://www.cnblogs.com/wanhua-wu/p/7245747.html

设计模式-15-建造者模式相关推荐

  1. C#设计模式之四建造者模式(Builder Pattern)【创建型】

    一.引言 今天我们要讲讲Builder模式,也就是建造者模式,当然也有叫生成器模式的,英文名称是Builder Pattern.在现实生活中,我们经常会遇到一些构成比较复杂的物品,比如:电脑,它就是一 ...

  2. 建造者模式java_java设计模式3——建造者模式

    java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...

  3. Java设计模式(建造者模式-适配器模式-桥接模式)

    Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...

  4. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  5. C++设计模式-Builder建造者模式

    作用: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是: ...

  6. java设计模式 建造模式_理解java设计模式之建造者模式

    理解java设计模式之建造者模式 发布于 2020-12-10| 复制链接 摘记: 建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中&qu ...

  7. 建造者模式 php,PHP设计模式之建造者模式定义与用法简单示例

    本文实例讲述了PHP设计模式之建造者模式.分享给大家供大家参考,具体如下: 建造者模式: 将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1). 来点我人类能听懂的话: 1.在客户端看来需 ...

  8. 学习《图说设计模式》建造者模式

    图说设计模式之建造者模式 1. 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮.方向盘.发送机等各种部件.而对于大多数用户而言,无须知道这 ...

  9. 实践GoF的23种设计模式:建造者模式

    本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简述 在程序设计中,我们会经常遇到一些复杂的对象,其中有很多成员属性,甚至嵌套着多个复杂的对象 ...

  10. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

最新文章

  1. Windows下Qt程序打包
  2. Mac 安装SecureCRT
  3. 算法实验--主函数只有五行的Floyed的算法以及最短路径输出
  4. EasyUI——实现展示后台数据代码
  5. 在探索的飞鸽传书科学的道路上
  6. Eclipse安装Alibaba Cloud Toolkit并连接阿里云云数据库
  7. rem,em,px的区别
  8. 简单搜索 poj1321
  9. Java实训项目:GUI学生信息管理系统(2019)【中】
  10. vue和php网站下载,vue.js去哪下载
  11. Confluence 6 让一个空间可以公众访问
  12. python模拟类蠕虫--蠕虫初探
  13. android开发笔记之联系人百家姓功能的实现
  14. Keras模型中数据维度报错
  15. MySQL5.7 连接不上的解决办法(本地无法登录)
  16. 西工大计算机学院培养方案,教务处组织召开本科生培养方案修订工作会
  17. int计算机考试,全国计算机等级考试是什么程序执行?
  18. 小柴胡灵活加减治杂病
  19. Spring的依赖注入(DI)和面向切面(AOP)代码解析说明
  20. HSV与RGB之间相互转换

热门文章

  1. 短信广告中虚拟网关发送与电信网关发送的区别
  2. 第二讲 数学模型方法
  3. [机器学习-实践]支持向量机(SVM)从例子代码中学习
  4. java 自动类型转换_彻底理解Java中的基本数据类型转换(自动、强制、提升)
  5. leetcode —— 1290. 二进制链表转整数
  6. 林达华:Computer Vision的尴尬
  7. 手把手教你搭建Nginx-rtmp流媒体服务器+使用ffmpeg推流
  8. 计算机辅助语言和语言学关系,西方语言学与多媒体计算机辅助语言学习_王艳萍...
  9. Spring表达式语言使用
  10. 最小生成树(Kruskal算法+Prim算法)简单讲解+最小生成树例题 acm寒假集训日记22/1/8