这是我参与更文挑战的第13天,活动详情查看: 更文挑战
什么是链式编程
链式编程就是可以通过方法. 的方式不断调用,其原理就是返回一个this对象,就是返回本身,达到链式效果。
我们经常用的 StringBuffer
就是实现了链式的写法。
这样使用起来是不是很爽,其实就是在设值完之后返回当前this对象。
StringBuffer#append()
源码:
lombok 链式编程
引入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
@Accessors(chain = true)
lombok 提供该方式写法的实现,只需要在Bean对象上加上一个 @Accessors(chain = true)
即可。
@Accessors(chain = true)
@Data
public class Student {
private String name;
private int age;
}
通过观察可以看到set方法返回对象为自己,这样代码简洁多了 ,而且实现了链式编程。
lombok 静态的链式编程
静态的链式编程 比 普通的链式编程 的好处:
- 创建对象更简洁;
- 可以在静态方法、静态代码块等中使用;
- 对于必输字段,可以强制要求。
import lombok.*;
import lombok.experimental.Accessors;
@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class Student {
@NonNull
private String name;
private int age;
}
如下使用,这样不仅实现了链式编程,还实现了静态创建。
@Test
public void test1(){
Student ss = Student.of("zhangsan").setAge(22);
System.out.println(ss.getAge());
System.out.println(ss.getName());
}
builder模式的链式Bean
builder模式的链式Bean原理为:在bean里面创建一个 静态builder方法 和一个 静态内部Builder类 ,通过调用静态builder方法来创建 Builder类,然后通过 Builder类 中的 build方法直接创建一个Bean,具体如下:
@Data
public class StudentBean {
private String name;
private int age;
public static Builder builder() {
return new Builder();
}
public static class Builder{
private String name;
private int age;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public StudentBean build() {
StudentBean studentBean = new StudentBean();
studentBean.setName(name);
studentBean.setAge(age);
return studentBean;
}
}
}
使用写法:
StudentBean studentBean = StudentBean.builder().name("zhangsan").age(11).build();
lombok 实现 builder模式的链式bean
这样就实现了一个builder模式的链式bean。其实用lombok就一个注解的事情。
import lombok.*;
@Builder
@Data
public class StudentBean {
private String name;
private int age;
}
关注+点赞👍收藏❤️不迷路
文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!