在实现建造者模式时,通常我们可以使用链式调用来使代码更具可读性和易于维护。但是在某些情况下,由于API的限制性而无法进行链式调用操作。当出现这种情况时,我们可以使用静态内部类来实现建造者模式。
以下是使用静态内部类实现建造者模式的示例代码:
public class Person {
private final String firstName; // 必填字段
private final String lastName; // 必填字段
private final int age; // 可选字段
private final String email; // 可选字段
private Person(Builder builder) {
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.email = builder.email;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public int getAge() {
return age;
}
public String getEmail() {
return email;
}
public static class Builder {
private final String firstName;
private final String lastName;
private int age = 0;
private String email = "";
public Builder(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder email(String email) {
this.email = email;
return this;
}
public Person build() {
return new Person(this);
}
}
}
这里我们使用了静态内部类Builder来构建Person对象。我们可以看到,Person类中的构造器是私有的,其中属性是不可变的,因此我们必须通过Builder类来构建对象。Builder类是可变的,并通过链式调用设置可选字段值。最后,我们使用Builder类中的build()方法来构建最终的Person对象。
使用这种方法实现建造者模式可以避免过多的代码,使代码更加简洁,并且可以轻松地添加新的可选字段。同时代码也更具可读性和易于维护。