Lombok中看到@builder 便开始去了解
用处
当一个类中有诸多属性,有些属性我们必须填写,而有些属于有时需要而有时不需要填写(即可选属性),构造器模式便是为了解决这一问题。
即主要是为了解决创建对象时对于必填字段与可选字段的问题。
用法
普通写法
我们需要写多个构造器去适配不同需求
public class Student {
// 必选
String name;
// 可选
int age;
String title;
public Student(String name) {
this.name = name;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(String name, int age, String title) {
this.name = name;
this.age = age;
this.title = title;
}
}
构造器写法
public class Student {
// 必选
private String name;
// 可选
private int age;
private String title;
private static class Builder {
// 必选
private String name;
// 可选
private int age;
private String title;
public Builder(String name) {
this.name = name;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder title(String s) {
this.title = s;
return this;
}
public Student build() {
return new Student(this);
}
}
private Student(Builder builder) {
name = builder.name;
age = builder.age;
title = builder.title;
}
}
要点:
-
在builder类中的构造器中赋值所需的必填字段。
-
构造器私有化,确保只允许使用builder方法进行初始化。
-
Builder类内部赋值
return this
.确保链式调用。
优点:
- 链式调用优雅,简单明了,代码可读性强。
Lombok
Lombok可以帮助我们实现builder,但是不能指定必填字段。