生成器模式(Builder Pattern) 是一种 创建型设计模式,用于构建复杂对象,并且能够一步步地构造对象,而无需直接使用构造函数传递大量参数。
在 Java 中,如果一个类有多个可选参数,传统方式是使用 重载构造函数 或 Setter 方法,但这样会导致代码冗长且不易维护。
生成器模式 通过 链式调用 和 方法返回当前对象 的方式,使代码更加清晰易读。
生成器模式通常包含以下几个部分:
✅ 优点
❌ 缺点
代码地址:GitHub
/**
* @author hanson
* @description: 定义产品类
* @date 2025-03-23 21:08:03
* @version: 1.0
*/
public class Product {
List<String> parts = new ArrayList<String>();
public void Add(String part) {
parts.add(part);
}
public void show() {
System.out.println("产品的组成:");
for (String part : parts) {
System.out.println(part + " ");
}
System.out.println("\n");
}
}
/**
* @author hanson
* @description: 生成器(Builder 类)
* @date 2025-03-23 21:10:30
* @version: 1.0
*/
public abstract class Builder {
public abstract void BuildPart();
public abstract Product getResult();
}
创建两个构造器不通的实现类,用于构建不同的产品
/**
* @author hanson
* @description: 具体构建者1
* @date 2025-03-23 21:17:56
* @version: 1.0
*/
public class Builder1 extends Builder{
Product product = new Product();
@Override
public void BuildPart() {
product.Add("A");
product.Add("B");
product.Add("C");
product.Add("D");
product.Add("E");
product.Add("F");
}
@Override
public Product getResult() {
return product;
}
}
/**
* @author hanson
* @description: 具体构建者2
* @date 2025-03-23 21:19:00
* @version: 1.0
*/
public class Builder2 extends Builder{
Product product = new Product();
@Override
public void BuildPart() {
product.Add("A");
product.Add("B");
product.Add("C");
}
@Override
public Product getResult() {
return product;
}
}
创建一个指挥Director用于负责Builder 创建
/**
* @author hanson
* @description: 指挥者 负责组织 Builder 的构建过程。
* @date 2025-03-23 21:16:35
* @version: 1.0
*/
public class Director {
public void Construct(Builder builder){
builder.BuildPart();
}
}
运行结果
Builder
的构建过程。BuildPart()
和 getResult()
方法。Product
实现方式。List
存储构造的部分,并在 show()
方法中打印结果。StringBuilder
、Lombok @Builder
、Jackson ObjectMapper
等应用。✅ 适用场景:
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️