工厂方法设计模式
🚩什么是生成器设计模式?
生成器模式(Builder Pattern) 是一种 创建型设计模式 ,用于构建复杂对象,并且能够一步步地构造对象,而无需直接使用构造函数传递大量参数。
在 Java 中,如果一个类有多个可选参数,传统方式是使用 重载构造函数 或 Setter 方法,但这样会导致代码冗长且不易维护。
生成器模式 通过 链式调用 和 方法返回当前对象 的方式,使代码更加清晰易读。
🚩生成器设计模式的特点
- 支持链式调用:可以连续调用方法来设置属性,使代码更优雅。
- 构造过程更清晰:将对象的创建步骤封装到生成器中,避免构造函数参数过多的问题。
- 提高可读性和可维护性:使用生成器模式可以避免复杂的构造函数重载,提高代码可读性。
- 可以对对象创建过程进行控制 :如可以添加 参数校验 、默认值 、对象克隆 等操作。
🚩生成器设计模式的结构
生成器模式通常包含以下几个部分:
- Product(产品类):要构建的复杂对象。
- Builder(抽象生成器):定义构建对象的步骤。
- ConcreteBuilder(具体生成器):实现 Builder 接口,并定义如何创建 Product 对象。
🚩生成器设计模式的优缺点
✅ 优点
- 避免构造方法参数过多的问题,提供更优雅的对象创建方式。
- 可以设置默认值,构造对象时不必提供所有参数。
- 可读性强,通过链式调用,使代码更直观。
- 解耦对象构建和表示,使代码更容易扩展和维护。
❌ 缺点
- 增加代码复杂度:需要额外定义 Builder 类,代码量比直接使用构造函数多。
- 对象构造过程比普通方法慢,因为涉及多个方法调用。
🚩生成器设计模式的Java实现
代码地址:GitHub
- 创建一个产品类Product
java
/**
* @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");
}
}
- 创建一个抽象建造者类,里面有两个抽象方法,用于构建产品和打印结果
java
/**
* @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();
}
-
创建两个构造器不通的实现类,用于构建不同的产品
- 具体构造器Builder1
java/** * @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; } }
- 具体构造器Builder2
java/** * @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 创建
java
/**
* @author hanson
* @description: 指挥者 负责组织 Builder 的构建过程。
* @date 2025-03-23 21:16:35
* @version: 1.0
*/
public class Director {
public void Construct(Builder builder){
builder.BuildPart();
}
}
📌 运行结果

🚩代码总结
- Director(指挥者) 负责组织
Builder
的构建过程。 - Builder(抽象构造者) 规定了
BuildPart()
和getResult()
方法。 - Builder1 和 Builder2(具体构造者) 提供不同的
Product
实现方式。 - Product(产品类) 通过
List<String>
存储构造的部分,并在show()
方法中打印结果。
🚩总结
- 生成器模式(Builder Pattern) 是 创建型设计模式 ,用于构建 复杂对象。
- 它 分离了对象的创建和表示 ,提高了 代码可读性 和 可维护性。
- 适用于 多个可选参数 的对象构造,避免构造方法重载的困扰。
- 在 Java 中,常见于
StringBuilder
、Lombok @Builder
、Jackson ObjectMapper
等应用。
✅ 适用场景:
- 需要创建 包含多个参数 的复杂对象。
- 需要构建 不可变对象。
- 希望提供更清晰的 API,提高代码可读性。
创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️
