Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数构造函数是一个比较好的实践法则。
我们有时候会写这样的实现类:
Student();
Student(String name);
Student(String name,int age);
Student(String name,int age,String address);
Student(String name,int age,String address,String id);
在实际开发中,我们有时候需要声明所有的构造方法,这样书写很常见并且也比较有效率,但是也存在很多不足,对于代码后期维护和协同开发会是一件很痛苦的事情。Builder模式就是使用一个代理完成对象的构建过程。这样的好处是易于扩展和类的使用,但同时也失去了一些效率。
/**
* Created by Jackie on 2019/3/27.
*/
public class Student {
private String name;
private int age;
private String address;
private String id;
private Student(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
this.id = builder.id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getAddress() {
return address;
}
public String getId() {
return id;
}
public static class Builder {
private String name = null;
private int age = 0;
private String address = null;
private String id = null;
public Builder() {
}
public Builder(String name) {
this.name = name;
}
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setAddress(String address) {
this.address = address;
return this;
}
public Builder setId(String id) {
this.id = id;
return this;
}
public Student build() {
return new Student(this);
}
}
}
用法: