java: Builder Pattern
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 建造模式 Builder Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc Product.java * * */ package com.javapatterns.builder; import java.util.*; public class Product { private String Name; private Date CreateDate; public Product() { //Write your code here } public Product(String name,Date createDate) { this.Name=name; this.CreateDate=createDate; } public Date getCreateDate() { return CreateDate; } public void setCreateDate(Date createDate) { this.CreateDate=createDate; } public String getName() { return Name; } public void setName(String name) { this.Name=name; } public String toString() { return "产品名称:"+this.Name.toString()+" 生产日期:"+CreateDate.toString(); } }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 建造模式 Builder Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc Builder.java * * */ package com.javapatterns.builder; import java.util.List; /** * 抽象建造者 * **/ abstract public class Builder { /** * 产品零件建造方法 * */ public abstract void buildPart1(); /** *产品零件建造方法 * */ public abstract void buildPart2(); /** *产品返还方法 * */ public abstract Product retrieveResult(); /** *产品返还方法 * */ public abstract List<Product> restrieveResults(); }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 建造模式 Builder Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc ConcreteBuilder.java * * */ package com.javapatterns.builder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.LinkedList; import java.util.List; public class ConcreteBuilder extends Builder{ private Product product = new Product() ; private List<Product> productList=new LinkedList<>(); /** * 产品零件建造方法 * */ public void buildPart1() { product.setName("塗聚文"); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); product.setCreateDate(date); productList.add(product); //build the first part of the product } /** * 产品零件建造方法 * */ public void buildPart2() { product.setName("天下為公"); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); product.setCreateDate(date); productList.add(product); //build the second part of the product } /** *产品返还方法 * */ public Product retrieveResult() { return product; } /** *产品返还方法 * */ public List<Product> restrieveResults() { return productList; } }
/** * 版权所有 2022 涂聚文有限公司 * 许可信息查看: * 描述: * 建造模式 Builder Patterns * 历史版本: JDK 14.02 * 2022-09-12 创建者 geovindu * 2022-09-12 添加 Lambda * 2022-09-12 修改:date * 接口类 * 2022-09-12 修改者:Geovin Du * 生成API帮助文档的指令: *javadoc - -encoding Utf-8 -d apidoc Director.java * * */ package com.javapatterns.builder; import java.util.*; import java.lang.*; import java.util.Date.*; import java.text.*; public class Director { private ConcreteBuilder builder; private Product product; private List<Product> productList=new LinkedList<>(); public Director() //Builder builder { /// this.builder = builder; } public void buildPart1() { product=new Product(); product.setName("geovindu"); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); product.setCreateDate(date); productList.add(product); } public void buildPart2() { product=new Product(); product.setName("涂聚文"); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); Date date = new Date(System.currentTimeMillis()); product.setCreateDate(date); productList.add(product); } public Product restrieveResult() { return product; } public List<Product> restrieveResults() { return productList; } /** * 产品构造方法,负责调用各个零件建造方法 * */ public void construct() { builder = new ConcreteBuilder(); builder.buildPart1(); builder.buildPart2(); Product p=builder.retrieveResult(); List<Product> list=builder.restrieveResults(); System.out.println(p.toString()); for (Product ps:list ) { System.out.println("Director: "+ps.toString()); } buildPart1(); buildPart2(); Product product=restrieveResult(); List<Product> productList=restrieveResults(); //continue with other code } }
调用测试:
//建造模式 Director director=new Director(); director.construct(); Product product=director.restrieveResult(); System.out.println("产品名称: "+ product.getName()+" 生产日期:"+product.getCreateDate().toString()); System.out.println(product.toString()); List<Product> list=director.restrieveResults(); for (Product p:list) { System.out.println(p.toString()); }
产品名称:天下為公 生产日期:Thu Sep 15 22:52:15 CST 2022 Director: 产品名称:天下為公 生产日期:Thu Sep 15 22:52:15 CST 2022 Director: 产品名称:天下為公 生产日期:Thu Sep 15 22:52:15 CST 2022 产品名称: 涂聚文 生产日期:Thu Sep 15 22:52:15 CST 2022 产品名称:涂聚文 生产日期:Thu Sep 15 22:52:15 CST 2022 产品名称:geovindu 生产日期:Thu Sep 15 22:52:15 CST 2022 产品名称:涂聚文 生产日期:Thu Sep 15 22:52:15 CST 2022
//建造模式 Director director=new Director(); director.construct(); Product product=director.restrieveResult(); System.out.println("产品名称: "+ product.getName()+" 生产日期:"+product.getCreateDate().toString()); System.out.println(product.toString()); List<Product> list=director.restrieveResults(); for (Product p:list) { System.out.println(p.toString()); } // list.forEach(item->System.out.println(item.toString())); //2、条件遍历 list.forEach(item-> { if ("geovindu".equals(item.getName())) { System.out.println(item.toString()); } });
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)