一、介绍
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
'建造者模式(Builder)',又叫生成器模式。建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。
二、代码实现
import java.util.ArrayList; //产品类 public class Product { ArrayList<String> parts = new ArrayList<>(); //添加新的产品不见 public void add(String part) { parts.add(part); } // 列举所有的产品不见 public void show() { for (String part : parts) { System.out.println(part); } } } //抽象的建造者类 public abstract class Builder { //建造部件A public abstract void buildPartA(); //建造部件B public abstract void buildPartB(); //得到产品 public abstract Product getResult(); } //具体的建造类 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; } } //具体的建造类 public class ConcreteBuilder2 extends Builder { private Product product = new Product(); @Override public void buildPartA() { product.add("部件X"); } @Override public void buildPartB() { product.add("部件Y"); } @Override public Product getResult() { return product; } } //指挥者类 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(); Builder b2 = new ConcreteBuilder2(); director.construct(b1); Product result1 = b1.getResult(); director.construct(b2); Product result2 = b2.getResult(); }