目录
- 链式编程
- Builder模式
链式编程
链式编程(Fluent AP)是一种编程风格,它通过在同一个对象上连续调用多个方法来执行一系列操作(让方法返回对象本身(return this
))。这种风格的编程使代码更加简洁,提高了代码的可读性和可维护性。
允许使用Lombok的团队可以使用@Accessors(chain = true)注解,让setter方法返回this,从而实现链式调用。
Builder模式
当对象构造方法入参很多、构造对象过程复杂时,此时构造方法可读性差,需要为不同的参数组合定义多个重载构造方法,构造方法爆炸。
此时,使用构造模式来代替构造方法创建对象。
即,创建静态内部类Builder,通过链式编程分步设置参数,最终通过build()方法创建目标对象。
示例如下:
public class User {
// 必选参数
private final String name;
// 可选参数
private final int age;
private final String address;
private final String phone;
// 私有构造方法,只能通过 Builder 构建
private User(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
this.phone = builder.phone;
}
// 静态内部 Builder 类
public static class Builder {
// 必选参数(通常通过构造方法传入)
private final String name;
// 可选参数(设置默认值)
private int age = 0;
private String address = "";
private String phone = "";
// 必选参数构造
public Builder(String name) {
this.name = name;
}
// 链式设置方法(返回 Builder 自身)
public Builder age(int age) {
this.age = age;
return this;
}
public Builder address(String address) {
this.address = address;
return this;
}
public Builder phone(String phone) {
this.phone = phone;
return this;
}
// 最终构建方法
public User build() {
return new User(this);
}
}
// Getter 方法(略)
}
在允许使用Lombok的团队,可以使用Lombok 简化代码,即通过 @Builder 注解自动生成 Builder 类。
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class User {
private final String name;
private final int age;
private final String address;
private final String phone;
}
// 使用
User user = User.builder()
.name("Alice")
.age(25)
.address("上海")
.build();