[Java实战经验]链式编程与Builder模式
目录
- 链式编程
- 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();