建造者模式
实体类
public class Product {
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
public Product() {
}
public Product(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;
}
@Override
public String toString() {
return "Product{" +
"productName='" + productName + '\'' +
", companyName='" + companyName + '\'' +
", part1='" + part1 + '\'' +
", part2='" + part2 + '\'' +
", part3='" + part3 + '\'' +
", 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;
}
}
建造者
public interface ProductBuilder {
void builderProductName();
void builderCompanyName();
void builderPart1();
void builderPart2();
void builderPart3();
void builderPart4();
Product builder();
}
具体建造者
public class ConcreteProductBuilder implements ProductBuilder {
private String productName;
private String companyName;
private String part1;
private String part2;
private String part3;
private String part4;
@Override
public void builderProductName() {
this.productName = "productName";
}
@Override
public void builderCompanyName() {
this.companyName = "companyName";
}
@Override
public void builderPart1() {
this.part1 = "part1";
}
@Override
public void builderPart2() {
this.part2 = "part2";
}
@Override
public void builderPart3() {
this.part3 = "part3";
}
@Override
public void builderPart4() {
this.part4 = "part4";
}
@Override
public Product builder() {
return new Product(this.productName, this.companyName, this.part1, this.part2, this.part3, this.part4);
}
}
指挥者
public class Director {
public Product makeProduct(ProductBuilder builder) {
builder.builderProductName();
builder.builderCompanyName();
builder.builderPart1();
builder.builderPart2();
builder.builderPart3();
builder.builderPart4();
return builder.builder();
}
}
测试类
public class BuilderTest {
public static void main(String[] args) {
ProductBuilder concreteProductBuilder = new ConcreteProductBuilder();
Director director = new Director();
Product productname = director.makeProduct(concreteProductBuilder);
System.out.println(productname);
}
}