生成器模式:能够从简单的对象一步一步生成复杂的对象,生成器模式是一种用来逐步构建复杂对象并在最后一步返回对象的创造型模式。构造一个对象的过程是通过泛型实现的,以便它能够用于对同一个对象创建不同的表示形式。

【产品抽象类】

package create.builder;/*** CarPlan抽象产品类* Created by admin on 2018/11/26.*/
public interface CarPlan {public void setBase(String basement);public void setWheels(String structure);public void setEngine(String structure);public void setRoof(String structure);public void setMirrors(String roof);public void setLights(String roof);public void setInterior(String interior);}
package create.builder;

/** * Created by admin on 2018/11/26. */public class Car implements CarPlan {

    private String base;    private String wheels;    private String engine;    private String roof;    private String mirrors;    private String lights;    private String interior;

    public void setBase(String basement) {        this.base = basement;    }

    public void setWheels(String structure) {

        this.wheels = structure;

    }

    public void setEngine(String structure) {

        this.engine = structure;

    }

    public void setRoof(String structure) {

        this.roof = structure;

    }

    public void setMirrors(String roof) {

        this.mirrors = roof;

    }

    public void setLights(String roof) {

        this.lights = roof;

    }

    public void setInterior(String interior) {

        this.interior = interior;

    }}
 

【抽象builder】

package create.builder;/*** Created by admin on 2018/11/26.*/
public interface CarBuilder {public void builderBase();public void builderWheels();public void builderEngine();public void builderRoof();public void builderMirrors();public void builderLihts();public void builderInterior();public Car getCar();}

【具体Builder】

package create.builder;/*** Created by admin on 2018/11/26.*/
public class HighEndCarBuilder implements CarBuilder {private Car car;public HighEndCarBuilder(){car = new Car();}public void builderBase() {car.setBase("Quality base");}public void builderWheels() {car.setWheels("Quality Tyres");}public void builderEngine() {car.setEngine("High-end Engine");}public void builderRoof() {car.setRoof("Flexible roof");}public void builderMirrors() {car.setMirrors("Quality Mirrors");}public void builderLihts() {car.setLights("Quality Lights");}public void builderInterior() {car.setInterior("High-end Interior");}public Car getCar() {return this.car;}
}

【具体Builder】

package create.builder;/*** Created by admin on 2018/11/26.*/
public class LowPriceCarBuilder implements CarBuilder {private Car car;public LowPriceCarBuilder(){car = new Car();}public void builderBase() {car.setBase("Low priced base");}public void builderWheels() {car.setWheels("Cheap Tyres");}public void builderEngine() {car.setEngine("Low Quality Engine");}public void builderRoof() {car.setRoof("No flexible roof");}public void builderMirrors() {car.setMirrors("Cheap Mirrors");}public void builderLihts() {car.setLights("Cheap Lights");}public void builderInterior() {car.setInterior("Cheap Interior");}public Car getCar() {return this.car;}
}

【导演类】

package create.builder;/*** 导演类构造Car对象* Created by admin on 2018/11/27.*/
public class Mechanicalengineer {private CarBuilder carBuilder;public Mechanicalengineer(CarBuilder carBuilder){this.carBuilder = carBuilder;}public Car getCar(){return carBuilder.getCar();}public void builderCar(){carBuilder.builderBase();carBuilder.builderWheels();carBuilder.builderEngine();carBuilder.builderRoof();carBuilder.builderMirrors();carBuilder.builderLihts();carBuilder.builderInterior();}}

【测试类】

package create.builder;/*** Created by admin on 2018/11/27.*/
public class TestBuilder {public static void main(String[] args) {CarBuilder lowPriceCarBuilder = new LowPriceCarBuilder();Mechanicalengineer mechanicalengineer = new Mechanicalengineer(lowPriceCarBuilder);mechanicalengineer.builderCar();Car car = mechanicalengineer.getCar();System.out.println("Builder Constructed Car:"+car);}}

转载于:https://www.cnblogs.com/airycode/p/10022326.html

创造型模式-生成器模式相关推荐

  1. 设计模式之建造者模式(生成器模式、Builder)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式包括:1.FactoryMethod(工厂方法模式):2.Abstract Factory(抽象工厂模式):3.Sin ...

  2. 设计模式(4)建造者模式/生成器模式(Builder)

    设计模式(0)简单工厂模式 设计模式(1)单例模式(Singleton) 设计模式(2)工厂方法模式(Factory Method) 设计模式(3)抽象工厂模式(Abstract Factory) 源 ...

  3. 建造者模式 生成器模式 创建型 设计模式(五)

    建造者模式 Builder 也叫做生成器模式 在正式开始建造者模式之前,先回顾下抽象工厂模式 本人的所有系列文章都是自己学习的记录过程,均有比较严格的先后顺序,如果不清楚抽象工厂模式可以先往前翻翻 从 ...

  4. 【设计模式】单例模式-生成器模式-原型模式

    前面的几种工厂模式,主要用于选择实现,这里的三种模式:单例模式.生成器模式.原型模式,主要用于生成对象,在GoF的划分中,这是创建型的五种模式(不包括简单工厂,前面提到过,这不是一个标准意义上的设计模 ...

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

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

  6. 设计模式(Java随笔)—生成器模式

    生成器模式(Builder Pattern):分离构建算法和具体的构造实现,从而使构建算法可以重用 Separate the construction of a complex object from ...

  7. 生成器模式 - Unity

    文章目录 生成器模式 结构 实现 - Unity 不使用主管类 使用主管类 应用场景 利与弊 生成器模式 生成器模式是开发中非常常用的设计模式,也被称作建造者模式,它可以分步骤的去创建产品,根据产品的 ...

  8. JAVA23种设计模式之生成器模式

    生成器模式 生成器模式是一种对象的创建模式,可以将一个复杂产品的内部表象和产品的生产过程分隔开来,(构建与表示分离).使得同样的构建过程可以创建不同的表示. 简单的来说,就是讲一个复杂的对象拆分成一个 ...

  9. 设计模式(三):生成器模式

    这是设计模式系列文章的第三篇 之前两篇的阅读效果不是很好,我一度怀疑这种题材的文章不受大家欢迎,直到前两天我面试了一个小姐姐... 面试过程中和小姐姐聊起她在上家公司做过的项目,其中有一个功能,根据小 ...

最新文章

  1. flask源码学习-路由的注册与请求处理的过程
  2. delphi中的第三方控件如何安装
  3. vue 路由参数变化,页面不刷新,provide /inject 完美解决方案
  4. JVM核心——JVM运行和类加载全过程
  5. android 过滤ip,EditText Android过滤器的IP地址###。###。###。###?
  6. 【08月02日】指数估值排名
  7. 使用 ffmpeg 从视频文件提取音频
  8. 其实就是为了能有字幕特效,用MeGUI + AVS压制PSP MP4AVC视频02 - 安装准备篇
  9. 台式计算机把硬盘换了怎么进系统,联想台式机怎么进bios设置硬盘启动
  10. 猪场超级管家 v4.0 免费
  11. 如何查看linux的系统配置,多少个核心,多少个线程?CPU的主频 查看内存
  12. WordPress教程 WordPress自动文章添加特色图片教程
  13. 后氧传感器正常数据_怎么看氧传感器数据流
  14. 图灵机停机问题的不可判定性
  15. 【Golang开发面经】字节跳动(三轮技术面)
  16. Flutter使用Canvas实现微信红包领取效果
  17. DAP数据分析平台介绍
  18. JAVA后端面经总结——应用类
  19. Linux7/Centos7磁盘分区、格式化及LVM管理
  20. Android--经典蓝牙(文件传输--socket通信)

热门文章

  1. 【Java从0到架构师】SpringCloud - Hystrix、Zuul
  2. 【jQuery笔记Part1】09-jQuery操作css-尺寸
  3. DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016,表挂起
  4. 电力企业信息化系统之调度信息报送系统整体解决方案
  5. python 小提高
  6. 免费生成十字绣字体_十字绣鞋垫图案 手工鞋垫历史长
  7. python中的 DFS 与 BFS
  8. 2014年电大计算机应用基础考,2017年电大计算机应用基础网考精彩试题与问题详解...
  9. android line分享代码,Android实现Line登录分享
  10. oracle 调用java 类_oracle数据库PL SQL调用Java类程序代码