/**

* 建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件

*从而建造出完整的产品对象。建造者模式将产品的结构和产品的零件建造过程

*对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造零件和责任分割开来,达到责任划分和封装的目*的。

*/

//BuilderInterface.java

package com.youngmaster.model.Builder;public interface BuilderInterface {public void buildPartA();public void buildPartB();public void buildPartC();public Product getResult();}

//BuilderRealize.java

package com.youngmaster.model.Builder;public class BuilderRealize implements BuilderInterface {private Product result = ProductFactory.getInstance();    public void buildPartA() {result.addPart("Part A");}    public void buildPartB() {result.addPart("Part B");}    public void buildPartC() {result.addPart("Part C");}public Product getResult() {return result;}
}

//Direct.java

package com.youngmaster.model.Builder;public class Direct {private BuilderInterface builder = null;public Direct(BuilderInterface builder) {this.builder = builder;}public void construct(int j) {if (j == 1) {builder.buildPartA();}else if (j == 2) {builder.buildPartA();builder.buildPartB();}else {builder.buildPartA();builder.buildPartB();builder.buildPartC();}}
}//Product.java
package com.youngmaster.model.Builder;import java.util.Collection;public interface Product {public void addPart(String part);public Collection getResult();
}

//ProductRealize.java

package com.youngmaster.model.Builder;import java.util.ArrayList;
import java.util.Collection;public class ProductRealize implements Product {private ArrayList carResult = new ArrayList();public void addPart(String part) {carResult.add(part);}public Collection getResult() {return carResult;}
}

//ProductFactory.java

package com.youngmaster.model.Builder;public class ProductFactory extends ProductRealize {public static Product getInstance() {return new ProductRealize();}
}

//Test.java

package com.youngmaster.model.Builder;import java.util.Collection;
import java.util.Iterator;public class Test {public static void main(java.lang.String[] args) {//在此处插入用来启动应用程序的代码。BuilderRealize builder = new BuilderRealize();Direct direct = new Direct(builder);direct.construct(2);Product product = builder.getResult();Collection col = product.getResult();Iterator ite = col.iterator();while (ite.hasNext()) {System.out.println(ite.next());}}
}

java 设计模式之: 建造模式(Builder)相关推荐

  1. java设计模式 建造模式_理解java设计模式之建造者模式

    理解java设计模式之建造者模式 发布于 2020-12-10| 复制链接 摘记: 建造者模式(Builder Pattern)主要用于"分步骤构建一个复杂的对象",在这其中&qu ...

  2. Java设计模式(建造者模式-适配器模式-桥接模式)

    Java设计模式Ⅲ 1.建造者模式 1.1 建造者模式概述 1.2 建造者模式的注意事项和细节 1.3 代码理解 2.适配器模式 2.1 类适配器模式 2.1.1 代码理解 2.2 对象适配器模式 2 ...

  3. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  4. Java设计模式分为创建模式, 结构模式, 行为模式 3种类型

    Java设计模式之创建模式包括: Factory,    工厂模式 Singleton,   单例模式 Builder,    建造模式 Prototype,    原型模式 Java设计模式之结构模 ...

  5. java设计模式之建造者模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

  6. JAVA设计模式之建造者模式

    转自 JAVA设计模式之建造者模式 建造者模式(Builder)的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. Builder模式是一步一步创建一个复杂对象的创建型 ...

  7. java设计模式6--适配器模式(Adapter )

    本文地址:http://www.cnblogs.com/archimedes/p/java-adapter-pattern.html,转载请注明源地址. 适配器模式(别名:包装器) 将一个类的接口转换 ...

  8. java设计模式5--原型模式(Prototype)

    本文地址:http://www.cnblogs.com/archimedes/p/java-prototype-pattern.html,转载请注明源地址. 原型模式 用原型实例指定创建对象的种类,并 ...

  9. 一文弄懂Java设计模式之建造者模式:图解+游戏角色生成实例

    文章目录 详解Java设计模式之建造者模式 案例引入建造者模式 建造者模式 定义 UML类图表示 模式结构 案例分析与代码实现 案例类图实现 代码结构 代码实现 结果分析 指挥者类的深入讨论 钩子方法 ...

  10. java备忘录模式应用场景_图解Java设计模式之备忘录模式

    图解Java设计模式之备忘录模式 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态. ...

最新文章

  1. 判断JS对象是否拥有某属性两种方式
  2. 机器学习基础-逻辑回归-09
  3. 同事就是同事,职场没有兄弟姐妹
  4. modify sql_在SQL Server中使用JSON_MODIFY()修改JSON数据
  5. activemq高可用
  6. 在 Mac 上打开照片应用时遇到错误 4302,如何修复?
  7. 如何使用Joyoshare VidiKit Mac版为WMV视频添加字幕?
  8. SpringBoot多数据源切换详解,以及开启事务后数据源切换失败处理
  9. 数据-第7课-线性表的顺序存储结构
  10. Til the Cows Come Home POJ - 2387
  11. matlab实现zca去白化,白化算法
  12. 输入一个字符串,判断这个字符串中有多少字母,数字
  13. 如何快速将CAD图纸转换成PDF文件?
  14. 网易云那些触动人心的经典热评
  15. 华硕(ASUS)路由器AP模式设置教程
  16. 有道linux安装路径,Ubuntu 16.04下安装有道词典出错的解决方法
  17. 初入Shell编程,了解规范与变量
  18. jstack 命令的使用和问题排查分析思路
  19. C语言字符串使用指南
  20. 华为在发布会带来了harmonyos,Mate 40发布会彩蛋!华为智选智能摄像头Pro发布

热门文章

  1. Photoshop快速复制图层的几种方法和技巧
  2. linux关闭8080端口,Linux修改iptables,取消8080的访问限制
  3. Hacking Team泄露数据表明韩国、哈萨克斯坦针对中国发起网络攻击
  4. stm32f103c8串口USART1发送多一字节
  5. 关于正则表达式中的 lookahead
  6. (三)OpenCV中的图像处理之轮廓
  7. java 并发 csp_CSP与并发编程
  8. 鸿蒙系统源代码解析,鸿蒙内核源码分析(系统调用篇) | 图解系统调用全貌
  9. COA-2019-第十四章 Instruction Sets
  10. python Beautiful Soup常用过滤方法