前言:【模式总览】——————————by xingoo

  模式意图

  一个对象的创建十分复杂,为了区分构建过程和使用过程,因此分开。使用一个Director类进行对象的创建,Builder规定了这个创建过程。

  模式结构

  Builder 抽象建造者接口,规范各个组成部分的构建。

  ConcreteBuilder 具体建造者角色,实现组成部分的构建,并提供示例。

  Product 产品角色,创建返回的对象。

  Director 导演者角色,负责创建以及使用。

  使用场景

  1 当创建对象复杂并且与其使用过程独立。

  2 构造过程允许构造的对象有不同的表示。

  代码结构

  Builder接口

 abstract class Builder{
public abstract void buildPart1();
public abstract void buildPart2();
public abstract Product retrieveResult();
}

  ConcreteBuilder 具体产品

 class ConcreteBuilder extends Builder{
public void buildPart1() { }
public void buildPart2() { }
public Product retrieveResult() {
return null;
}
}

  Product 产品

 class Product{
//Anything
}

  Director 导演者角色

 class Director{
private Builder builder;
public void Constructor(){
builder = new ConcreteBuilder();
builder.buildPart1();
builder.buildPart2();
builder.retrieveResult();
}
}

  生活中的设计模式

  

‘  近年来,变形金刚4出了也快半年了,但是还是喜欢第一部的女主角。

  而擎天柱队长,经典的台词,“汽车人变身”也是伴随着复杂的变化过程。而汽车人的转变只在一瞬之间,看起来行云流水,这就有点创建者的味道。擎天柱的各个身体部分经过复杂的变化,最后变身成为汽车人。

  

 /**
* Builder
*/
interface Transformer{
public void Create_Head();
public void Create_Body(); public Autobots transforming();
}
/**
* ConcreteBuilder
*/
class Transformer_Captain implements Transformer{
public void Create_Head() {
System.out.println("变形出脑袋...");
}
public void Create_Body() {
System.out.println("变形出身体...");
}
public Autobots transforming() {
return new Autobots();
}
}
/**
* Product
*/
class Autobots{
Autobots(){
System.out.println("啊!...变形金刚 变身....");
}
}
/**
* 这个类当做Director
*/
public class TransformerBuilder { public static Autobots Transforming(Transformer optimusPrime){
optimusPrime.Create_Head();
optimusPrime.Create_Body();
return optimusPrime.transforming();
} public static void main(String[] args){
Transformer optimusPrime = new Transformer_Captain();
Transforming(optimusPrime);
} }

  变身结果

变形出脑袋...
变形出身体...
啊!...变形金刚 变身....

  

【设计模式】—— 创建者模式Builder的更多相关文章

  1. [设计模式] 3 创建者模式 builder

    转载http://blog.csdn.net/wuzhekai1985/article/details/6667467 建造者模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不 ...

  2. 设计模式学习总结(五)创建者模式(Builder)

    创建者模式,主要针对某些产品有类似的生产步骤,且有需要有先后顺序的进行各个部件的生成. 一.示例展示: 通过学习及总结,以下是我完成的创建者模式的示例: 1.创建产品类:Laptop public c ...

  3. 创建者模式-Builder

    创建者模式使用多个简单的对象一步一步构建成一个复杂的对象.它提供了一种创建对象的最佳方式.一个 Builder 类会一步一步构造最终的对象,该 Builder 类是独立于其他对象的. 一.类图 创建者 ...

  4. 创建者模式Builder

    创建者模式: 分离对象子组件的单独构造(由Builder来负责)和装配(由Director负责),对象的构造比较复杂时使用 该模式. 类图: Builder 抽象建造者接口,规范各个组成部分的构建. ...

  5. 设计模式—建造者模式(Builder)

    title: 设计模式-建造者模式 建造者模式(Builder)是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节.建造者模式属于对 ...

  6. 23种设计模式--建造者模式-Builder Pattern

    一.建造模式的介绍       建造者模式就是将零件组装成一个整体,用官方一点的话来讲就是将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示.生活中比如说组装电脑,汽车等等这些都是建 ...

  7. 设计模式--建造者模式Builder(创建型)

    一.首先看建造者模式的UML图: 二.再来看一个建造者模式的例子 class Builder { public: virtual void BuildHead() {} virtual void Bu ...

  8. 说说设计模式~建造者模式(Builder)

    返回目录 建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我 ...

  9. C#设计模式——生成器模式(Builder Pattern)

    一.概述在软件系统中,有时候面临着复杂的对象创建,该对象由一定算法构成的子对象组成,由于需求变化,这些子对象会经常变换,但组合在一起的算法却是稳定的.生成器模式可以处理这类对象的构建,它提供了一种封装 ...

随机推荐

  1. Leetcode——64. 最小路径和

    题目描述:题目链接 同样对于这个问题,我们可以考虑用动态规划来解决. 解决动态规划常见的三个步骤: 1:问题的归纳.对于 i,j 位置上的最短路径可以用d[ i ][ j ]表示. 2:归纳递推式:d ...

  2. P2216 [HAOI2007]理想的正方形

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一行为3个整数,分别表示a,b,n的值 第二行至 ...

  3. vxlan 简单理解 vs calico 网络模型

    1.vxlan(virtual Extensible LAN)虚拟可扩展局域网,是一种overlay的网络技术,使用MAC in UDP的方法进 行封装,共50字节的封装报文头. 2.VTEP为虚拟机 ...

  4. Spring 整合Mybatis实例

    演示样例下载地址:http://download.csdn.net/detail/geloin/4506640 本文基于Spring 注解,让Spring跑起来.本文使用Mysql数据库. (1) 导 ...

  5. 一键安装Docker图形化管理界面-Shipyard

    Shipyard是一款开源的图形化的Docker管理工具,记得以前安装很麻烦的,现在官方有了自动安装脚本,使用非常方便.复制.粘贴.使用,就这么简单.先不研究他是如何实现的,安装使用起来再说. $ c ...

  6. 20155223 Exp7 网络欺诈防范

    20155223 Exp7 网络欺诈防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 无设防或防护力特别弟弟低的公共局域网,或者是在同一个局域网下. 在日常生活工作中如何防范以上两 ...

  7. Qt 的线程与事件循环

    Qt 的线程与事件循环

  8. idea 中全局查找不到文件 (两shift),单页搜索不到关键字的原因

    全局查找不到文件是因为把要找的目录的本级或者上级设置为了额外的,所以自然找不到 而单页搜索不到内容是因为设置了words关键字,这个要全部都输入完才能找到(也就是整个关键字进行匹配,匹配到了整体才会查 ...

  9. 纯 CSS 解决自定义 CheckBox 背景颜色问题

    CodePen 需要使用色 #ec6337(当然可以是任意颜色),解决问题:记住密码定制 CheckBox,解释全在注释里 主要使用到 ::before 或 ::after 伪类处理,伪装成内部的那个 ...

  10. Error when Building GPU docker image for caffe: Unsupported gpu architecture 'compute_60'

    issue: Error when Building GPU docker image for caffe: Unsupported gpu architecture 'compute_60' rea ...