建造者模式
简介
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
使用场景:
复杂对象的创建(多个参数)
StringBuilder
Lombok的@Builder
HTTP请求构建
实现要点:
链式调用
可选参数
不可变对象
代码示例
建造者
@Data
public class User {
private String name;
private String desc;
private Integer id;
User(final String name, final String desc, final Integer id) {
this.name = name;
this.desc = desc;
this.id = id;
}
public static UserBuilder builder() {
return new UserBuilder();
}
public static class UserBuilder {
private String name;
private String desc;
private Integer id;
UserBuilder() {
}
public UserBuilder name(final String name) {
this.name = name;
return this;
}
public UserBuilder desc(final String desc) {
this.desc = desc;
return this;
}
public UserBuilder id(final Integer id) {
this.id = id;
return this;
}
public User build() {
return new User(this.name, this.desc, this.id);
}
public String toString() {
return "User.UserBuilder(name=" + this.name + ", desc=" + this.desc + ", id=" + this.id + ")";
}
}
}使用方式
public class Test {
public static void main(String[] args) {
User user = User.builder()
.id(1)
.name("nnn")
.desc("ddd")
.build();
System.out.println(user);
}
}Last updated
Was this helpful?