java: Builder Pattern
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | /** * 版权所有 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(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | /** * 版权所有 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(); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | /** * 版权所有 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; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | /** * 版权所有 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 } } |
调用测试:
1 2 3 4 5 6 7 8 9 10 11 12 | //建造模式 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()); } |
1 2 3 4 5 6 7 | 产品名称:天下為公 生产日期: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 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //建造模式 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(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!