Java 之建造者模式

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

相關文章
相關標籤/搜索