建造者模式(Builder),将一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,用户只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。
package Builder; import java.util.ArrayList; /** * 产品类,由多个部件组成 * */ public class Product { ArrayList<String> partList = new ArrayList<String>(); // 添加产品部件 public void add(String part) { partList.add(part); } public void show() { System.out.println("create product"); for (String string : partList) { System.out.println(string); } } }
package Builder; /** * 抽象建造者类,确定产品由两个部件PartA和PartB组成 * 并声明一个的到产品建造后结果的方法getResult * */ public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult(); }
package Builder; /** * 具体建造者类 * */ public class ConcreteBuilder1 extends Builder { private Product product=new Product(); @Override public void buildPartA() { product.add("A"); } @Override public void buildPartB() { product.add("B"); } @Override public Product getResult() { return product; } }
package Builder; public class Director { public void construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); } /** * 客户端代码,客户不需要知道具体的建造过程 */ public static void main(String[] args) { Director director=new Director(); Builder b1=new ConcreteBuilder1(); director.construct(b1); Product p1=b1.getResult(); p1.show(); } }