一,Builder Pattern
builder模式也叫建造者模式,builder模式的作用将一个复杂对象的构建与他的表示分离,使用者可以一步一步的在不同方法中构建一个比较复杂的对象。
二,实践代码
完整代码
public class People {
private String id ;
private String name ;
private Integer age ;
public People(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public People(Builder builder) {
this.id = builder.id;
this.name = builder.name;
this.age = builder.age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public static Builder builder(){
return new Builder();
}
public static class Builder{
private String id ;
private String name ;
private Integer age ;
public Builder id(String id) {
this.id = id ;
return this;
}
public Builder name(String name) {
this.name = name ;
return this ;
}
public Builder age(Integer age) {
this.age = age ;
return this;
}
public People build() {
return new People(id, name, age);
}
public People build2() {
return new People(this);
}
}
}
使用代码
public static void main(String[] args) {
People people = People.builder()
.id("11")
.name("小明")
.age(17)
.build();
System.out.println(people);
}
执行结果
People [id=11, name=小明, age=17]
实践代码二
利用lombok插件自动生成Builder。
Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。
import lombok.Builder;
@Builder
public class People {
private String id ;
private String name ;
private Integer age ;
public People(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
@Override
public String toString() {
return "People [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
Maven 依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
如果是Eclipse 开发环境, 要加插件的。