链式编程在jdk8中的Stream操作、SpringSecurity、Quartz等场景中均有实现,核心就是赋值之后返回自身
它使得属性的赋值变得简便,代码具有层次感,且将创建过程和具体表示相分离,实现解耦
步骤
1.在主类中创建一个静态内部类 Builder,Builder拥有主类所有的属性
2.为主类创建一个private的构造函数,参数为Builder类型,将Builder的属性赋值给主类
3.在静态内部类中创建主类属性的赋值方法,返回值是Builder
4.Builder内部类创建一个build方法,返回主类实例
public class Message {
private Integer id;
private String msg;
private String mark;
private Message(Builder builder){
this.id=builder.id;
this.msg=builder.msg;
this.mark=builder.mark;
}
public static class Builder{
private Integer id;
private String msg;
private String mark;
public Builder setId(Integer id) {
this.id = id;
return this;
}
public Builder setMsg(String msg) {
this.msg = msg;
return this;
}
public Builder setMark(String mark) {
this.mark = mark;
return this;
}
public Message build(){
return new Message(this);
}
}
@Override
public String toString() {
return "Message{" +
"id=" + id +
", msg='" + msg + '\'' +
", mark='" + mark + '\'' +
'}';
}
}
Message msg = new Message.Builder().setId(100)
.setMsg("你好啊")
.setMark("123456")
.build();
System.out.println("msg = " + msg);
msg = Message{id=100, msg='你好啊', mark='123456'}