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(涂聚文)
浙公网安备 33010602011771号