将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示。
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。建造者模式的好处是使得构造复杂对象的建造代码和表示代码分离,隐藏了产品是如何组装的,若需要改变一个产品的内部表示,只需要再定义一个具体的建造者。
类图
Product:要创建的产品角色,由多个部件组成。
Builder:为创建一个Product对象的各个部件指定的抽象接口。
ConcreteBuilder:具体的建造者,实现Builder接口,构造和装配各个部件。
Director:指挥者,它使用Builder接口,根据用户的需求构建Product对象。
实现 1 2 3 public class Product {}
1 2 3 4 5 6 7 8 9 public abstract class Builder { public abstract void buildPartA () ; public abstract void buildPartB () ; public abstract Product getResult () ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class ConcretBuilder extends Builder { private Product product = new Product(); @Override public void buildPartA () { } @Override public void buildPartB () { } @Override public Product getResult () { return product; } }
1 2 3 4 5 6 7 8 public class Director { public void construct (Builder builder) { builder.buildPartA(); builder.buildPartB(); } }
1 2 3 4 5 6 7 8 9 10 public class Client { public static void main (String[] args) { Director director = new Director(); Builder builder = new ConcretBuilder(); director.construct(builder); Product product = builder.getResult(); } }