public interface Builder { public void buildPart1(); public void buildPart2(); public Product retrieveResult(); }
public class Product { /** * 瀹氫箟涓�浜涘叧浜庝駭鍝佺殑鎿嶄綔 */ private String part1; private String part2; 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 class ConcreteBuilder implements Builder { private Product product = new Product(); /** * 產品零件建造方法1 */ @Override public void buildPart1() { // 構建產品的第一個零件 product.setPart1("編號:9527"); } /** * 產品零件建造方法2 */ @Override public void buildPart2() { // 構建產品的第二個零件 product.setPart2("名稱:XXX"); } /** * 產品返還方法 */ @Override public Product retrieveResult() { return product; } }
public class Director { /** * 持有當前須要使用的建造器對象 */ private Builder builder; /** * 構造方法,傳入建造器對象 * * @param builder * 建造器對象 */ public Director(Builder builder) { this.builder = builder; } /** * 產品構造方法,負責調用各個零件建造方法 */ public void construct() { builder.buildPart1(); builder.buildPart2(); } }
public class Client { public static void main(String[] args) { Builder builder = new ConcreteBuilder(); Director director = new Director(builder); director.construct(); Product product = builder.retrieveResult(); System.out.println(product.getPart1()); System.out.println(product.getPart2()); } }
學習設計模式強烈推薦的博客:java_my_lifejava
代碼地址:lennongit