定义
建造者模式也叫做生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同表示
建造者模式通用类图
在建造者模式中,有如下4个角色
Product产品类
# 通常是实现了模仿方法模式,也就是模版方法和基本方法。
Builder抽象建造者
# 规范产品的组件,一般是由子类实现
ConcreteBuilder具体建造者
# 实现抽象类定义的所有方法,并返回一个组件好的对象。
Director导演类
# 安排已有的模版顺序,然后告诉Builder开始建造 # 导演类起到封装作用,避免高层模块深入到建造者内部的实现类。(当建造者模式比较庞大时,导演类可以有多个)
public class Product {
public void doSomething() {
// 独立处理业务
}
}
----------------------
public abstract class Builder{
//设置产品的不同部分,以获得不同的产品
public abstract void setPart();
//建造产品
public abstract Product builderProduct();
}
-------------------------------------------------------
public class ConcreteProcuct extends Builder {
private Product product = new Product();
@Override
public void setPart() {
// 设置产品零件
}
@Override
public Product builderProduct() {
// 组建一个产品
return product;
}
}
--------------------------------------------------
public class Director {
private Builder builder = new ConcreteProcuct();
//建造不同的产品
public Product getProduct(){
return builder.builderProduct();
}
}
建造者模式应用
建造者模式的优点
# 1 封装性
# 2 建造者独立,容易扩展
# 3 便于控制细节风险
建造者模式的使用场景
# 1 相同的方法,不同的执行顺序,产生不同的事件结果
# 2 多个部件或零件,都可以转配到一个对象中,但是产生的运行结果又不相同时。
# 3 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效果。
建造者模式关注的是零件和装配工艺(顺序),这是它与工厂方法模式最大的不同