相信很多小伙伴在代码里看到这种 'Object'.setXX().setYY.setNN(),这种写法来设置一个对象的值,感觉相当的爽,当然啦有的·小伙伴用的lombok的的@builder来实现的,那么今天我们就来看下怎么用builder模式来实现它
首先我们定义一个Person类
package com.example.demo.builder;
public class Person {
private String name;
private String email;
public Person(String name, String email) {
this.name = name;
this.email = email;
}
public Person() {
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
public static class PersonBuilder{
private String name;
private String email;
public PersonBuilder setName(String name) {
this.name = name;
return this;
}
public PersonBuilder setEmail(String email) {
this.email = email;
return this;
}
public Person build(){
return new Person(name,email);
}
}
}
测试类
package com.example.demo;
import com.example.demo.builder.Person;
public class DemoApplication {
public static void main(String[] args) {
Person person = new Person.PersonBuilder()
.setName("zs").setEmail("w@test.com")
.build();
System.out.println(person);
}
}
结果
这种类似的写法在很多地方可以看到,举个例子,大家可以看下DateTimeFormatterBuilder.java
这个类,
使用
如有不对的地方请大佬指教