建造者模式
- 描述
- 基本要素
- 协调类
- 使用
描述
建造者模式属于创造型设计模式。
通常用于构建一系列复杂对象,这些对象有一定的共性。
我们可以通过不同的建造者,组装不同的对象
与工厂模式的区别,建造者模式更侧重与基于基础构件组装而非直接创建基础构件
基本要素
- 定义产品类
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();@Overridepublic void process() {product.method1();product.method2();}@Overridepublic Product build() {return product;}
}public class BBuilder extends Builder {Product product = new Product();@Overridepublic void process() {product.method1();product.method3();}@Overridepublic 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();}
}