设计模式-建造者模式
为什么需要建造者模式
- 可选参数过多的类进行初始化的时候需要很多的构造函数。
- 这种类不管是在实现还是初始化都比较麻烦。
使用场景
当一个类的构造函数参数超过4个,并且有些参数还是可选的参数,考虑使用建造者模式。
实现方式(链式调用)
看一下Lombok是如何实现的。
@Builder
public class User {
private final Integer code = 200;
private String username;
private String password;
}
// 编译后:
public class User {
private String username;
private String password;
User(String username, String password) {
this.username = username; this.password = password;
}
public static User.UserBuilder builder() {
return new User.UserBuilder();
}
public static class UserBuilder {
private String username;
private String password;
UserBuilder() {}
public User.UserBuilder username(String username) {
this.username = username;
return this;
}
public User.UserBuilder password(String password) {
this.password = password;
return this;
}
public User build() {
return new User(this.username, this.password);
}
public String toString() {
return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")";
}
}
}