为什么要用建造者模式,例如Person p=new Person(10个参数),这样会很头疼,参数一多,无法分辨
灵活性:可以按需设置,无需定义多个构造方法
可读性:链式调用使代码简介名了
扩展性:如果增加了新属性,只需要在Builder中添加相应的方法
public class Person {
// 属性
private String name;
private int age;
private String email;
// 私有构造函数,防止直接实例化
private Person(Builder builder) {
this.age = builder.age;
this.email = builder.email;
}
// Getter 方法
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
// 静态内部类 Builder
public static class Builder {
private String name;
private int age;
private String email;
// 设置 name 并返回 Builder 对象
public Builder setName(String name) {
this.name = name;
return this;//this指代当前Builder对象
}
// 设置 age 并返回 Builder 对象
public Builder setAge(int age) {
this.age = age;
return this;
}
// 设置 email 并返回 Builder 对象
public Builder setEmail(String email) {
this.email = email;
return this;
}
// 构建 Person 对象
public Person build() {
return new Person(this);
}
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", email='" + email + '\'' +
'}';
}
}
使用方式
public class Main {
public static void main(String[] args) {
// 使用建造者模式构造 Person 对象
Person person = new Person.Builder()
.setName("John Doe")
.setAge(30)
.setEmail("john.doe@example.com")
.build();
// 输出 Person 对象
System.out.println(person);
}
}