最近在学习builder模式,尝试编写代码,对于内部类的使用需要比较熟练否则会出不少错误(关于内部类的使用可以参考我的另外一篇博文),下面我给出两种方式。
第一种
public class people {
private int age;
private String name;
public int getAge() {
return age;
}
public String getName() {
return name;
}
static builder builder(){
return new people().new builder();
}
class builder{
builder age(int a){
age=a;
return this;
}
builder name(String n){
name=n;
return this;
}
people build(){
return people.this;
}
}
}
第二种
public class man {
private int age;
private String name;
public man() {
}
public man(int a,String n) {
age=a;
name=n;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
static builder builder(){
return new builder();
}
static class builder{
private int age;
private String name;
builder age(int a){
age=a;
return this;
}
builder name(String n){
name=n;
return this;
}
man2 build(){
return new man(age,name);
}
}
补充:使用lombok,实现代码和第二种应该相同
import lombok.Builder;
@Builder
class woman {
private int age;
private String name;
public int getAge() {
return age;
}
public String getName() {
return name;
}
测试代码:
people people=people.builder().age(20).name("xiaowang").build();
System.out.println(people.getAge()+people.getName());
man man=man.builder().age(22).name("xiaoming").build();
System.out.println(man.getAge()+man.getName());
woman woman=woman.builder().age(24).name("xiaohong").build();
System.out.println(woman.getAge()+woman.getName());
结果为
20xiaowang
22xiaoming
24xiaohong