Java 中的 Builder 模式(建造者模式) 是一种创建型设计模式,用于分步构建复杂对象,尤其适合对象有很多可选参数或构造过程较复杂的情况。
如果一个类的构造参数很多:
new User("Tom", 18, "男", "Beijing", "123456", "tom@test.com");
问题包括:
✅ 将对象的构建过程与表示分离
✅ 使用链式调用,代码更清晰
✅ 对象一旦创建就不可变(推荐)
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);
}
}
}
User user = new User.Builder()
.name("Tom")
.age(18)
.email("tom@test.com")
.build();
✅ 清晰
✅ 可读性强
✅ 不需要关心构造顺序
✅ 避免构造函数参数过多
✅ 支持可选参数
✅ 链式调用,代码优雅
✅ 容易扩展新参数
✅ 常用于不可变对象
❌ 代码量稍多
❌ 如果对象很简单,使用 Builder 会显得冗余
StringBuilderOkHttpClient.BuilderAlertDialog.Builder(Android)| 方式 | 可读性 | 可选参数 | 扩展性 |
|---|---|---|---|
| 构造函数 | 差 | 差 | 差 |
| JavaBean | 一般 | 好 | 一般 |
| 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 模式 = 用链式方式优雅地创建复杂对象
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。