基本构建者模式
package builder;
public class BuilderTest {
public static void main(String[] args) {
ProductBuilder builder=new DefaultConcrateProductBuilder();
Director director =new Director(builder);
ProductTest productTest=director.makeProduct("productNamexxx","companyNamexxx","part1","part2","part3","part4");
System.out.println(productTest.toString());
}
}
interface ProductBuilder{
void builderProductName(String productName);
void builderCompanyName(String companyName);
void builderPart1(String part1);
void builderPart2(String part2);
void builderPart3(String part3);
void builderPart4(String part4);
ProductTest build();
}
class DefaultConcrateProductBuilder implements ProductBuilder{
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
@Override
public void builderProductName(String productName) {
this.productName = productName;
}
@Override
public void builderCompanyName(String companyName) {
this.companyName = companyName;
}
@Override
public void builderPart1(String part1) {
this.part1 =part1;
}
@Override
public void builderPart2(String part2) {
this.part2 =part2;
}
@Override
public void builderPart3(String part3) {
this.part3 =part3;
}
@Override
public void builderPart4(String part4) {
this.part4 =part4;
}
@Override
public ProductTest build() {
return new ProductTest(this.productName,this.companyName,this.part1,this.part2,this.part3,this.part4);
}
}
class SpecialConcrateProductBuilder implements ProductBuilder{
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
@Override
public void builderProductName(String productName) {
this.productName = productName;
}
@Override
public void builderCompanyName(String companyName) {
this.companyName = companyName;
}
@Override
public void builderPart1(String part1) {
this.part1 =part1;
}
@Override
public void builderPart2(String part2) {
this.part2 =part2;
}
@Override
public void builderPart3(String part3) {
this.part3 =part3;
}
@Override
public void builderPart4(String part4) {
this.part4 =part4;
}
@Override
public ProductTest build() {
return new ProductTest(this.productName,this.companyName,this.part1,this.part2,this.part3,this.part4);
}
}
class Director{
private ProductBuilder builder;
public Director(ProductBuilder builder) {
this.builder = builder;
}
public ProductTest makeProduct(String productName, String companyName, String part1, String part2, String part3, String part4){
builder.builderProductName(productName);
builder.builderCompanyName(companyName);
builder.builderPart1(part1);
builder.builderPart2(part2);
builder.builderPart3(part3);
builder.builderPart4(part4);
ProductTest productTest = builder.build();
return productTest;
}
}
class ProductTest{
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
public ProductTest() {
}
public ProductTest(String productName, String companyName, String part1, String part2, String part3, String part4) {
this.productName = productName;
this.companyName = companyName;
this.part1 = part1;
this.part2 = part2;
this.part3 = part3;
this.part4 = part4;
}
public String getProductName() {
return productName;
}
public void setProductName(String productName) {
this.productName = productName;
}
public String getCompanyName() {
return companyName;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public String getPart1() {
return part1;
}
public void setPart1(String part1) {
this.part1 = part1;
}
public String getPart2() {
return part2;
}
public void setPart2(String part2) {
this.part2 = part2;
}
public String getPart3() {
return part3;
}
public void setPart3(String part3) {
this.part3 = part3;
}
public String getPart4() {
return part4;
}
public void setPart4(String part4) {
this.part4 = part4;
}
@Override
public String toString() {
return "Prodect{" +
"productName='" + productName + '\'' +
", companyName='" + companyName + '\'' +
", part1='" + part1 + '\'' +
", part2='" + part2 + '\'' +
", part3='" + part3 + '\'' +
", part4='" + part4 + '\'' +
'}';
}
}
变种构建者模式
package builder.V2;
public class ProductTest2 {
public static void main(String[] args) {
ProductTest productTest =new ProductTest.Builder().productName("xx").companyName("xx").part1("xx").part2("xx").part3("x").part4("x").build();
System.out.println(productTest.toString());
}
}
class ProductTest{
private final String productName;
private final String companyName;
private final String part1;
private final String part2;
private final String part3;
private final String part4;
public ProductTest(String productName, String companyName, String part1, String part2, String part3, String part4) {
this.productName = productName;
this.companyName = companyName;
this.part1 = part1;
this.part2 = part2;
this.part3 = part3;
this.part4 = part4;
}
static class Builder{
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
public Builder productName(String productName){
this.productName = productName;
return this;
}
public Builder companyName(String companyName){
this.companyName = companyName;
return this;
}
public Builder part1(String part1){
this.part1 = part1;
return this;
}
public Builder part2(String part2){
this.part2 = part2;
return this;
}
public Builder part3(String part3){
this.part3 = part3;
return this;
}
public Builder part4(String part4){
this.part4 = part4;
return this;
}
ProductTest build(){
return new ProductTest(this.productName,this.companyName,this.part1,this.part2,this.part3,this.part4);
}
}
@Override
public String toString() {
return "Prodect{" +
"productName='" + productName + '\'' +
", companyName='" + companyName + '\'' +
", part1='" + part1 + '\'' +
", part2='" + part2 + '\'' +
", part3='" + part3 + '\'' +
", part4='" + part4 + '\'' +
'}';
}
}