【设计模式】—— 创建者模式Builder

时间:2022-02-26 23:13:57

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

  模式意图

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

  模式结构

【设计模式】—— 创建者模式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();
}
}

  生活中的设计模式

【设计模式】—— 创建者模式Builder

  

‘  近年来,变形金刚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. Sprint(第八天11.21)

  2. <img>标签

    <img src="w3school.jpg" width="104" height="142" />注释:图像的名称和尺寸是以 ...

  3. uGUI练习&lpar;七&rpar; Drag And Drop

    练习目标 练习UI的拖放操作 一.相关组件 EventTrigger Canvas Group ScrollRect Mask Scrollbar 二.拖放练习 1.创建一个Panel,命名Panel ...

  4. codeforces 675E Trains and Statistic 线段树&plus;贪心统计

    分析:这个题刚看起来无从下手 但是我们可以先简化问题,首先可以固定起点i,求出i+1到n的最小距离 它可以到达的范围是[i+1,a[i]],贪心的想,我们希望换一次车可以到达的距离尽量远 即:找一个k ...

  5. linux pts&sol;0的含义

    pts是所谓的伪终端或虚拟终端,具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1.比如用who命令查询当前登录的用户,可以看到每个用户的TTY设备 ...

  6. Python字符编码讲解

    声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...

  7. OC中NSFileManager

    NSFileManager介绍 NSFileManager是用来管理文件系统的 它可以用来进行常见的文件\文件夹操作(拷贝.剪切.创建等) NSFileManager使用了单例模式singleton ...

  8. habse Region server挂掉

    2019-04-28 15:57:28,355 INFO org.apache.hadoop.hbase.regionserver.HeapMemoryManager: heapOccupancyPe ...

  9. 安装MCScanX

    1.首先安装依赖软件 the Java SE Development Kit (JDK) and “libpng” 参考路径:https://mp.weixin.qq.com/s?src=11&amp ...

  10. TinyMind 多标签图像分类竞赛 之路

    竞赛传送门:https://www.tinymind.cn/competitions/42 我们就是傻狗天仙配啦~ 决赛排行榜: 这次比赛感谢第一名的 baseline:https://blog.cs ...