图1 建造者模式【点击查看大图】

  基本的知识点已在思维导图中,下面是demo

1,Builder

为创建一个产品对象的各个部件指定抽象接口

public interface PersonBuilder {
void buildHead();
void buildBody();
void buildFoot();
Person buildPerson();
}

2,ConcreteBuilder

实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口

class ManBuilder implements PersonBuilder {
Person person;
public ManBuilder() {
person = new Man();
} public void buildHead() {
person.setHead("建造男人的头");
} public void buildBody() {
person.setBody("建造男人的身体");
} public void buildFoot() {
person.setFoot("建造男人的脚");
} public Person buildPerson() {
return person;
}
} class WomanBuilder implements PersonBuilder {
Person person;
public WomanBuilder() {
person = new Woman();
}
public void buildBody() {
person.setBody("建造女人的身体");
}
public void buildFoot() {
person.setFoot("建造女人的脚");
}
public void buildHead() {
person.setHead("建造女人的头");
}
public Person buildPerson() {
return person;
}
}

3,Director

构造一个使用Builder接口的对象,指导构建过程

public class PersonDirector {
public Person constructPerson(PersonBuilder pb) {
pb.buildHead();
pb.buildBody();
pb.buildFoot();
return pb.buildPerson();
}
}

4,Product

表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口

public class Person {
private String head;
private String body;
private String foot; 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 getFoot() {
return foot;
}
public void setFoot(String foot) {
this.foot = foot;
}
} class Man extends Person {
public Man(){
System.out.println("开始建造男人");
}
}
class Woman extends Person {
public Woman(){
System.out.println("开始建造女人");
}
}

5,Test验证代码

public class Test{
public static void main(String[] args) {
PersonDirector pd = new PersonDirector();
Person womanPerson = pd.constructPerson(new ManBuilder());
Person manPerson = pd.constructPerson(new WomanBuilder());
}
}

6,参考链接

https://blog.csdn.net/jason0539/article/details/44992733

Java建造者模式(思维导图)的更多相关文章

  1. Java技术栈思维导图

    Java技术栈思维导图 Java IO流体系 设计模式

  2. Java基础学习—思维导图

    找到两张Java学习的思维导图,特别适合我这样的菜鸟学习,贴过来和小伙伴分享.

  3. Java基础(含思维导图)

    很早之前整理的Java基础的一些知识点,思维导图: 1.'别名现象' 对一个对象赋值另一个对象,会指向新的对象引用,赋值前的对象引用会由于不再被引用而被gc回收: 而基本类型则不同.基本类型存储了实际 ...

  4. Java内存管理思维导图

    文 by / 林本托 Tips 做一个终身学习的人. 如果想要成为一名合格的 Java 程序员,就必须要涉及和掌握一些 Java 虚拟机的内部结构和特性.最近在读<深入理解Java 虚拟机> ...

  5. Java知识汇总——思维导图

    转载:https://www.cnblogs.com/java1024/p/8757952.html Java知识点汇总,从基础到常用的API.还有常用的集合类,总结的很详细.图片是从论坛里面找到的, ...

  6. Java 内存溢出思维导图

    文 by / 林本托 Tips 做一个终身学习的人. 在 Java 内存中,只有一个区域不会发生 OOM 异常,那就是程序计数器内存.下面的思维导图记录了每个内存区域发生内存异常的条件和基本的解决思路 ...

  7. Java知识体系思维导图

    Java知识体系,为方便预览,将思维导图上传至印象笔记,博客园直接上传图片受限于图片大小,暂时接触这么多,待以后丰富 https://app.yinxiang.com/shard/s24/nl/272 ...

  8. java关键词整理——思维导图

    如图 思维导图图片链接 http://www.edrawsoft.cn/viewer/public/s/5e27f174483042

  9. Java并发(思维导图)

    1,线程状态转换 无限期等待: 限期等待: 线程生命流程: 2,实现方式 代码实现样例[三种方式]: package com.cnblogs.mufasa.demo2; import java.uti ...

  10. 阿里巴巴Java开发手册思维导图

    趁着有时间把阿里巴巴Java开发手册又看了一遍了,很多时候觉得看完之后,发现自己好像一点都不记得了里面的内容了.只能把大概内容画一遍在脑子里形成一张图方便记忆,这样就更能够记得自己的看完的内容了.其中 ...

随机推荐

  1. mongoose 安装及配置

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方>案.MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据 ...

  2. arcgis python xlstoshp

    import xlrd # must init xlrd import arcpy # param arcpy.env.workspace = r"F:\note\python\ArcPy& ...

  3. 《你不知道的JavaScript(上)》笔记——动态作用域

    动态作用域让作用域作为一个在运行时就被动态确定的形式, 而不是在写代码时进行静态确定的形式.动态作用域并不关心函数和作用域是如何声明以及在何处声明的, 只关心它们从何处调用. 换句话说, 作用域链是基 ...

  4. 全国数据json

    { "provinces": { "province": [ { "ssqid": "110000", "ss ...

  5. Build Telemetry for Distributed Services之OpenTracing项目

    中文文档地址:https://wu-sheng.gitbooks.io/opentracing-io/content/pages/quick-start.html 中文github地址:https:/ ...

  6. Java 正则判断一个字符串中是否包含中文

    使用正则判断一个字符串中是否包含中文或者中文字符 代码实现如下: import java.util.regex.Matcher; import java.util.regex.Pattern; /** ...

  7. 参照UB单创建DN并过账

    *&---------------------------------------------------------------------* *& Form FRM_DN_POST ...

  8. [Python]Excel编程示例教程(openpyxl)

    1 前言(Preface) 博文背景:论文实验中有一大堆数据集需要观测其数据特征,通过人体肉眼,难以直观感受,故而准备通过生成Excel,可视化其评测数据. We know: Excel便于可视化分析 ...

  9. VMware虚拟机下CentOS 6.5配置网络

    使用NAT模式 虚拟机网络连接使用NAT模式,物理机网络连接使用Vmnet8. 虚拟机设置里面——网络适配器,网络连接选择自定义:Vmnet8 (NAT模式) 虚拟机菜单栏—编辑—虚拟网络编辑器,选择 ...

  10. 使用dd命令克隆整个Linux系统

    参考:https://www.cnblogs.com/jikexianfeng/p/6103504.html 本次使用使用dd命令克隆整个Ubuntu系统 1,VM安装一台Ubuntu虚拟机 过程不详 ...