建造者模式的定义
建造者模式也叫生成器模式,定义如下:
Separate the construction of a complex object from its representation so that the sameconstruction process can create different representations.( 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示。)
public class Product {
public void doSomething() {
}
}
public abstract class Bulider {
public abstract void setPart();
public abstract Product buildProduct();
}
public class ConcreteProduct extends Bulider {
Product product = new Product();
@Override
public void setPart() {
/**
* 产品类内部处理
*/
}
@Override
public Product buildProduct() {
return product;
}
}
public class Director {
private Bulider bulider = new ConcreteProduct();
public Product getAProduct(){
bulider.setPart();
/**
* 设置不同的零件,生产不同的产品
*/
return bulider.buildProduct();
}
}
上述代码是建造者模式的一个通用代码。
建造者模式的应用
优点
- 封装性
- 建造者独立,易扩展
- 便于控制细节风险
使用场景
- 相同的方法,不同的执行顺序,产生不同的时间结果时,可以采用建造者模式。
- 多个部件或者零件,都可以装配到一个对象中,但是产生的运行结果时,则可以使用建造者模式。
- 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
- 在对象创建过程中会使用到系统中的一些其他对象, 这些对象在产品对象的创建过程中不易得到时, 也可以采用建造者模式封装该对象的创建过程。 该种场景只能是一个补偿方法, 因为一个对象不容易获得, 而在设计阶段竟然没有发觉, 而要通过创建者模式柔化创建过程, 本身已经违反设计的最初目标。
注意事项
建造者模式关注的是零件类型和装配工艺(顺序),这是他与工厂方法模式最大的不同的地方。