定义(又名生产器模式):
- 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以产生不同的表示。
通用类图:
建造者模式通用类图
/*
*定义产品类,通常为实现模板模式方法的具体执行类
* */
public class Product {
public void doSomething() {
// 独立的业务逻辑
}
}
public abstract class Builder {
//设置产品的不同部分,以获得不同的产品
public abstract void setPart();
//建造产品
public abstract Product buildProduct();
}
/*
* 创建具体的建造者,有多个产品类就有几个具体的建造者,而且这些多个产品具有相同的接口或者抽象类
* */
public class ConcreteProductBuilder extends Builder {
Product product = new Product();
@Override
public void setPart() {
// 特有的内部逻辑处理
}
@Override
public Product buildProduct() {
// TODO Auto-generated method stub
return product;
}
}
/*
* 创建导演类
* */
public class Director {
Builder productBuilder = new ConcreteProductBuilder();
//构建不同的产品
public Product getProduct(){
productBuilder.setPart();
return productBuilder.buildProduct();
}
}
public class Client {
public static void main(String[] args) {
Director director = new Director();
director.getProduct();
}
}
建造者模式的优点:
- 具有良好的封装性
- 建造者独立,容易拓展,具体的建造者是相互独立的,有利于系统的拓展
- 便于控制细节风险,具体的建造者相互独立,可以对建造的过程逐步细化,而不对其他的模块产生影响
常见的使用场景:
- 多个部件或零件,都可以装配到一个对象中,但是运行的结果又不相同时
- 产品类较复杂,或者产品类中的调用顺序不同产生不同的效能
-