温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Builder模式是什么

发布时间:2026-07-24 07:55:12 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

Java 中的 Builder 模式(建造者模式) 是一种创建型设计模式,用于分步构建复杂对象,尤其适合对象有很多可选参数或构造过程较复杂的情况。


一、Builder 模式解决了什么问题?

常见问题

如果一个类的构造参数很多:

new User("Tom", 18, "男", "Beijing", "123456", "tom@test.com");

问题包括:

  • 参数多,顺序容易错
  • 很多参数可能是可选的
  • 构造函数爆炸(多个重载构造函数)

二、Builder 模式的核心思想

✅ 将对象的构建过程与表示分离
✅ 使用链式调用,代码更清晰
✅ 对象一旦创建就不可变(推荐)


三、经典 Builder 模式示例

1️⃣ 目标类(User)

public class User {
    private final String name;
    private final int age;
    private final String email;

    private User(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.email = builder.email;
    }

    public static class Builder {
        private String name;
        private int age;
        private String email;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public Builder email(String email) {
            this.email = email;
            return this;
        }

        public User build() {
            return new User(this);
        }
    }
}

2️⃣ 使用方式

User user = new User.Builder()
        .name("Tom")
        .age(18)
        .email("tom@test.com")
        .build();

✅ 清晰
✅ 可读性强
✅ 不需要关心构造顺序


四、Builder 模式的优点

✅ 避免构造函数参数过多
✅ 支持可选参数
✅ 链式调用,代码优雅
✅ 容易扩展新参数
✅ 常用于不可变对象


五、Builder 模式的缺点

❌ 代码量稍多
❌ 如果对象很简单,使用 Builder 会显得冗余


六、真实使用场景

1️⃣ JDK / 框架中

  • StringBuilder
  • OkHttpClient.Builder
  • AlertDialog.Builder(Android)

2️⃣ 业务场景

  • 复杂配置对象
  • DTO / VO 构建
  • API 请求参数封装

七、与构造函数的对比

方式 可读性 可选参数 扩展性
构造函数 差 差 差
JavaBean 一般 好 一般
Builder ✅ 非常好 ✅ 好 ✅ 好

八、Lombok 中的 Builder(简化写法)

@Builder
public class User {
    private String name;
    private int age;
    private String email;
}

使用:

User user = User.builder()
        .name("Tom")
        .age(18)
        .build();

⚠️ 注意:Lombok 的 @Builder 默认生成的是可变 Builder,不是不可变对象。


九、一句话总结

Builder 模式 = 用链式方式优雅地创建复杂对象

如果你愿意,我也可以:

  • 对比 Builder 和工厂模式
  • 画 UML 类图
  • 讲 Builder 在 Spring / Android 中的实践
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手