1. 建造者模式
建造者模式(Builder Pattern)也叫做生成器模式,定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式中有四个角色:
- Product 产品类。
- Builder 抽象建造者。
- ConcreteBuilder 具体建造者
- Director 导演类
1.1. 产品类
产品类通常是一个组合或继承(如模板方法)产生的类。
public class Product {
public void doSomething(){
//业务处理
}
}
1.2. 建造者类
1.2.1. 抽象建造者
public abstract class Builder {
//设置产品的不同部分,以获得不同的产品
public abstract void setPart();
//建造产品
public abstract Product buildProduct();
}
1.2.2. 具体建造者
如果有多个产品类,就有多个具体的建造者,而且这多个产品类具有相同接口或抽象类。
public class ConcreteProduct extends Builder{
private Product product = new Product();
//设置产品零件
@Override
public void setPart() {
//不同产品内的逻辑处理,对product进行操作
}
//组建一个产品
@Override
public Product buildProduct() {
return product;
}
}
1.3. 导演类
导演类起到封装的作用,避免高层模块深入到建造者内部的实现类。在建造者模式比较庞大时,导演类可以有多个。
public class Director {
private Builder builder = new ConcreteProduct();
//构建不同的产品
public Product getProduct(){
//设置不同的产品内部逻辑
builder.setPart();
return builder.buildProduct();
}
}
2. 建造者模式的应用
建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式的最大不同。
建造者模式最主要的功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗的说就是零件的装配,顺序不同,产生的对象也不同。而工厂方法模式则重点是创建,创建零件是它的主要职责,组装顺序则不是它关注的。