使用场景
建造者模式,英文名Builder Pattern
该模式使用一个单独的类,来封装对象的构建过程
适用场景:
对象构建或初始化工作特别麻烦,让用户手动去构建或初始化很容易出错,或者要调用特别多的函数
建造者模式和工厂模式的区别
单从功能上来说,建造者模式和工厂模式的功能很像
但如果大家两种模式都使用过,就会发现区别还是特别大的,很容易区分
工厂模式侧重于集中生产产品对象,是对多种产品的一种集中管理,产品对象的创建工作往往很简单
建造者模式则是侧重于构建单个对象,使用这个模式,往往是由于单个对象的构建工作十分繁琐
实现代码
public class Product {
Long productId;
String productName;
String productModel;
public static class Builder {
Long productId;
String productName;
String productModel;
public Builder name(String name) {
productName = name;
return this;
}
public Builder model(String model) {
productModel = model;
return this;
}
//构造前需要对参数进行检查
//参数检查成功后,再动态分配产品id,顺序不能反,否则会浪费id资源
public Product build() {
if (!checkProductName())
return null;
if (!checkProductModel())
return null;
generateProductId();
Product product = new Product();
product.productId = productId;
product.productName = productName;
product.productModel = productModel;
return product;
}
//检查产品名称是否合法
protected boolean checkProductName() {
return true;
}
//检查产品型号是否存在
protected boolean checkProductModel() {
return true;
}
//为产品分配id
protected void generateProductId() {
}
}
}
public static void main(String[] args) {
Builder builder = new Builder();
Product product = builder.name("DJX无人机").model("DJX-x24").build();
System.out.println(product.productId);
}