描述
建造者模式属于创造型设计模式。
通常用于构建一系列复杂对象,这些对象有一定的共性。
我们可以通过不同的建造者,组装不同的对象
与工厂模式的区别,建造者模式更侧重与基于基础构件组装而非直接创建基础构件
基本要素
- 定义产品类
public class Product {
public void method() {
// code
}
}
- 定义抽象建造者
public abstract class Builder {
public abstract void process();
public abstract Product build();
}
- 定义具体建造者
public class ABuilder extends Builder {
Product product = new Product();
@Override
public void process() {
product.method1();
product.method2();
}
@Override
public Product build() {
return product;
}
}
public class BBuilder extends Builder {
Product product = new Product();
@Override
public void process() {
product.method1();
product.method3();
}
@Override
public Product build() {
return product;
}
}
协调类
与工厂方法类似,为了避免调用方与众多建造者子类直接交互。
我们可以定义一个中间协调类
public class BuilderCoordinator {
private Builder aBuilder = new ABuilder();
private Builder bBuilder = new BBuilder();
public Product AProduct() {
aBuilder.process();
return aBuilder.build();
}
public Product BProduct() {
aBuilder.process();
return aBuilder.build();
}
}
使用
public class Sample {
public static void main(String[] args) {
BuilderCoordinator coordinator = new BuilderCoordinator();
Product ap = coordinator.AProduct();
Product bp = coordinator.BProduct();
}
}