建造者模式定义
建造者模式就是将一个复杂对象的构建(同一类的不同实现)在客户端隐藏起来实现细节,可以使得同样的构建过程可以创建不同的表示。
建造者模式中出现的角色定义
产品类
我们想要构建的产品,每种产品都有自己的实现细。
bulilder抽象构建者
构造我们上面提到的同一产品类不同实现
ConcreteBuilder具体建造者
实现抽象类定义的所有方法, 可以返回一个组建好的对象。
Director类
负责定义我们在客户端想要创建的对象,然后通过其具有的构造器对象,针对每种对象构建,然后返回。
代码实现
// 产品类
public class Product {
public void doSomething(){
//独立业务处理
}
}
// 抽象建造者
public abstract class Builder {
//设置产品的不同部分, 以获得不同的产品
public abstract void setPart();
//建造产品
public abstract Product buildProduct();
}
public class ConcreteProduct extends Builder {
private Product product = new Product();
//设置产品零件
public void setPart(){
//产品类内的逻辑处理
}
//组建一个产品
public Product buildProduct() {
return product;
}
}
public class Director {
private Builder builder = new ConcreteProduct();
//构建不同的产品
public Product getAProduct()
{
builder.setPart();
//设置不同的零件, 产生不同的产品,产生的产品是我们上面进行setpart,进行过产品内逻辑处理的产品。
return builder.buildProduct();
}
}
// 所以说该类避免了上层模块对我们实现产品细节的了解,客户端只需要执行获得不同实现细节产品的方法即可。
建造者模式使用场景
1:相同的方法, 不同的执行顺序, 产生不同的执行结果时,便采用建造者模式。
2:多个部件或零件, 都可以装配到一个对象中, 但是产生的运行结果又不相同时, 则可
以使用该模式。
3:当一个产品类非常复杂, 或者由于产品类中的调用顺序不同产生了不同的效能, 这个时候使用建造者模式非常合适
最重要的一点:
建造者模式关注的是零件类型和装配工艺(顺序)