在不使用内部类实现Builder模式时,需要手动编写繁琐的代码,这使得代码难以维护和扩展。为此,我们可以使用Lambda表达式来简化代码并实现Builder模式。
首先,定义一个Builder接口来创建对象:
public interface PersonBuilder {
PersonBuilder setName(String name);
PersonBuilder setAge(int age);
PersonBuilder setGender(String gender);
Person build();
}
然后,创建一个Person类并提供Builder实现:
public class Person {
private String name;
private int age;
private String gender;
private Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public static PersonBuilder builder() {
return (name) -> (age) -> (gender) -> new Person(name, age, gender);
}
}
在这个实现中,我们使用Lambda表达式来实现Builder接口。注意,我们可以链式调用set方法来设置属性值,并且在调用build方法时,我们会使用Lambda表达式来创建Person对象。
现在,我们可以使用Builder模式来创建Person对象:
Person p = Person.builder()
.setName("Tom")
.setAge(20)
.setGender("Male")
.build();
通过使用Lambda表达式,我们可以使代码更加紧凑和易于维护,同时实现了Builder模式的灵活性和可扩展性。