应用背景

实现汽车组装工厂功能:汽车组装工厂可以根据汽车的发动机、车轮、底盘、车座数、汽车的排量等指标为用户组装汽车,用建造者模式解决这个问题。

代码

Car类

package MakeCar;
public class Car {private String Engine;private String Wheel;private String Base;private String Seats;private String Displacement;public String getDisplacement() {return Displacement;}public void setDisplacement(String displacement) {Displacement = displacement;}public String getSeats() {return Seats;}public void setSeats(String seats) {Seats = seats;}public String getBase() {return Base;}public void setBase(String base) {Base = base;}public String getWheel() {return Wheel;}public void setWheel(String wheel) {Wheel = wheel;}public String getEngine() {return Engine;}public void setEngine(String engine) {Engine = engine;}public String toString() {return "发动机:"+Engine+"\n轮胎:"+Wheel+"\n底盘:"+Base+"\n车座数:"+Seats+"\n汽车排量:"+Displacement;}
}

CarBuilder类

package MakeCar;
public abstract class CarBuilder {Car car=new Car();public abstract void buildEngine();public abstract void buildWheel();public abstract void buildBase();public abstract void buildSeats();public abstract void buildDisplacement();public Car getCar() {return car;}
}

PlanA类

package MakeCar;
public class PlanA extends CarBuilder{@Overridepublic void buildEngine() {// TODO Auto-generated method stubgetCar().setEngine("宝马A型号发动机");}@Overridepublic void buildWheel() {// TODO Auto-generated method stubgetCar().setWheel("米其林A型号");}@Overridepublic void buildBase() {// TODO Auto-generated method stubgetCar().setBase("东风A型号");}@Overridepublic void buildSeats() {// TODO Auto-generated method stubgetCar().setSeats("4");}@Overridepublic void buildDisplacement() {// TODO Auto-generated method stubgetCar().setDisplacement("大众A型号");}
}

PlanB类

package MakeCar;
public class PlanB extends CarBuilder{@Overridepublic void buildEngine() {// TODO Auto-generated method stubgetCar().setEngine("大众B型号发动机");}@Overridepublic void buildWheel() {// TODO Auto-generated method stubgetCar().setWheel("米其林B型号");}@Overridepublic void buildBase() {// TODO Auto-generated method stubgetCar().setBase("东风B型号");}@Overridepublic void buildSeats() {// TODO Auto-generated method stubgetCar().setSeats("12");}@Overridepublic void buildDisplacement() {// TODO Auto-generated method stubgetCar().setDisplacement("大众B型号");}
}

Planer类

package MakeCar;
public class Planer {CarBuilder carbuilder;public Planer(CarBuilder carbuilder) {this.carbuilder=carbuilder;}public Car constract(){carbuilder.buildBase();carbuilder.buildEngine();carbuilder.buildWheel();carbuilder.buildDisplacement();carbuilder.buildSeats();return carbuilder.getCar();}
}

Test类

package MakeCar;
public class Test {public static void main(String[] args) {PlanA a=new PlanA();Planer planerA=new Planer(a);Car car=planerA.constract();System.out.println("汽车组装方案A:");System.out.println(car.toString());PlanB b=new PlanB();Planer planerB=new Planer(b);car=planerB.constract();System.out.println("汽车组装方案B:");System.out.print(car.toString());     }
}

运行结果

建造者模式实现汽车组装工厂功能(Java代码实例)相关推荐

  1. java手机模式_Java使用建造者模式实现办理手机套餐功能详解

    本文实例讲述了Java使用建造者模式实现办理手机套餐功能.分享给大家供大家参考,具体如下: 一.模式定义 建造者简单理解就是造东西,只不过建造者模式建造的不是一个简单的东西,是一个比较复杂的东西. 二 ...

  2. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  3. 建造者模式(Builder)——从组装电脑开始

    建造者模式(Builder)--从组装电脑开始 建造者模式概括起来就是将不同独立的组件按照一定的条件组合起来构成一个相对业务完整的对象.调用者无需知道构造的过程. 我们从组装电脑开始 让我们从买组装电 ...

  4. python如何实现选项功能_python几种常用功能如何实现 python几种常用功能实现代码实例...

    本篇文章小编给大家分享一下python几种常用功能实现代码实例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.python 程序退出的几种方式 import sys s ...

  5. 【Java 代码实例 14】BeanUtils用法详解,附源码分析

    目录 一.org.apache.commons.beanutils.BeanUtils简介 二.使用的前置条件 三.添加pom 四.org.apache.commons.beanutils.BeanU ...

  6. 【Java 代码实例 13】Java操作pdf的工具类itext

    目录 一.什么是iText? 二.引入jar 1.项目要使用iText,必须引入jar包 2.输出中文,还要引入下面```itext-asian.jar```包 3.设置pdf文件密码,还要引入下面` ...

  7. 自动生成表格html,js实现自动生成表格功能的代码实例

    js实现自动生成表格功能的代码实例 发布时间:2020-07-18 17:45:52 来源:亿速云 阅读:115 作者:小猪 这篇文章主要讲解了js实现自动生成表格功能的代码实例,内容清晰明了,对此有 ...

  8. 游戏设计模式与实现之:建造者模式 与 角色组装

    GoF说明: 将一个复杂对象的构建流程与他的对象表现分离开来,让相同的构建流程可以产生不同的对象行为表现 模式说明: 当你需要一个从构建到行为都非常复杂的对象的时候,你肯定希望找到一个点,用这个点将这 ...

  9. 微信开发-发放普通红包(java代码实例)

    一.介绍 前一阵子做了个微信发放普通红包的功能,在这记录下开发思路 二.微信官网 https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.ph ...

  10. Java 技术篇-使用IDEA开发java代码实例演示,IntelliJ IDEA的安装与使用

    使用 IntelliJ IDEA 开发 Java 代码 第一章:IDEA 的下载与安装 ① IDEA 的下载 ② IDEA 的安装 ③ IDEA 的配置 第二章:IDEA 创建并运行项目演示 ① ID ...

最新文章

  1. 文件查找命令find的使用
  2. (转)解决ubuntu下拼音输入法出错的问题
  3. 无服务器计算的黑暗面:程序移植没那么容易
  4. linux编译错误 程序中有游离的,操作系统实验报告 附思考题(24页)-原创力文档...
  5. ADMT3.2域迁移之Server2003至Server2012系列(五)添加域管理员权限
  6. UE3 中文教程主页
  7. 如何判断一个变量是数组还是对象
  8. (原)U盘可见容量不能被识别的处理方法
  9. 21.go tool pprof
  10. php alias 报错,PHP: class_alias - Manual
  11. js基础-24-伪数组转化为真数组
  12. docker 安装 oracle
  13. 噪声和振动分析软件,它代表了统计能量分析(SEA)领域的最高水平AutoSEA2 V2.8
  14. C++模拟鼠标键盘操作(转)
  15. 正则表达式-re.error: unbalanced parenthesis at position 7
  16. 通过WIFI信号跟踪三维人体姿态的新方法
  17. Oracle 自动存储管理 (ASM)
  18. 个性化推荐的6种方法
  19. 对抗恶意软件,反病毒软件还有戏吗?
  20. 白帽汇赵武:我们来聊一聊实名制

热门文章

  1. 让终端窗口“下雪”的有趣指令
  2. DNS污染,配置DNS
  3. 如何查看网卡带宽是千兆还是百兆
  4. 常见计算机病毒有些什么症状,电脑中病毒的症状有哪些
  5. Scala——函数式编程、面向对象
  6. TextView中动态显示某些值
  7. html外链自动加nofollow,WordPress自动为站外链接添加nofollow标签
  8. UE5 live-coding和build中version“1.2“ not support build failed解决方法
  9. 数据库增删改查的基本操作和SpringBoot创建
  10. LODOP直接用base64码输出图片