設計模式004-建造者模式
阿新 • • 發佈:2020-12-21
技術標籤:設計模式
建造者模式
package com.build; public class BuildTest { public static void main(String[] args) { DefualtConcreteProductBuild defualtConcreteProductBuild = new DefualtConcreteProductBuild(); Director director = new Director(defualtConcreteProductBuild); Product product = director.makeProduct("productA","CN","part1","part2","part3","part4"); System.out.println(product); } } interface ProductBuild { void buildProductName(String productName); void buildCompanyName(String companyName); void buildPart1(String part1); void buildPart2(String part2); void buildPart3(String part3); void buildPart4(String part4); Product build(); } class DefualtConcreteProductBuild implements ProductBuild { private String productName; private String companyName; private String part1; private String part2; private String part3; private String part4; @Override public void buildProductName(String productName) { this.productName = productName; } @Override public void buildCompanyName(String companyName) { this.companyName = companyName; } @Override public void buildPart1(String part1) { this.part1 = part1; } @Override public void buildPart2(String part2) { this.part2 = part2; } @Override public void buildPart3(String part3) { this.part3 = part3; } @Override public void buildPart4(String part4) { this.part4 = part4; } @Override public Product build() { return new Product(this.productName, this.companyName, this.part1, this.part2, this.part3, this.part4); } } class Director { private ProductBuild build; public Director(ProductBuild build){ this.build=build; } public Product makeProduct(String productName, String companyName, String part1, String part2, String part3, String part4) { build.buildProductName(productName); build.buildCompanyName(companyName); build.buildPart1(part1); build.buildPart2(part2); build.buildPart3(part3); build.buildPart4(part4); return build.build(); } } 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 + '\'' + '}'; } }
靜態內部類建造者模式
package com.build.v2; public class BuildTest2 { public static void main(String[] args) { Product product = new Product.Builder().setProductName("productA").setCompanyName("cn").setPart1("part1").setPart2("part2") .setPart3("part3").setPart4("part4").build(); System.out.println(product); } } class Product { 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 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; } static class Builder{ private String productName; private String companyName; private String part1; private String part2; private String part3; private String part4; public Builder setProductName(String productName) { this.productName = productName; return this; } public Builder setCompanyName(String companyName) { this.companyName = companyName; return this; } public Builder setPart1(String part1) { this.part1 = part1; return this; } public Builder setPart2(String part2) { this.part2 = part2; return this; } public Builder setPart3(String part3) { this.part3 = part3; return this; } public Builder setPart4(String part4) { this.part4 = part4; return this; } Product build() { return new Product(this.productName, this.companyName, this.part1, this.part2, this.part3, this.part4); } } @Override public String toString() { return "Product{" + "productName='" + productName + '\'' + ", companyName='" + companyName + '\'' + ", part1='" + part1 + '\'' + ", part2='" + part2 + '\'' + ", part3='" + part3 + '\'' + ", part4='" + part4 + '\'' + '}'; } }
應用
org.springframework.web.servlet.mvc.method.RequestMappingInfo;
org.springframework.beans.factory.support.BeanDefinitionBuilder;