Builder Design Pattern example.
2 min readMay 2, 2020
When to use Builder Design Pattern
- To optimize Telescoping constructor.
- Build immutable object
- If field will increase in future we need not to edit all previous classes.
How to use Builder Design Pattern
suppose we have a Student class where we want to initialise it using constructor
class Student {
int rollNumber;
String firstName;
String lastName;
String address;
String age;
String studentClass;
Student(int rollNumber, String firstName, String lastName,
String address, String age, String studentClass) {
this.rollNumber = rollNumber;
this.firstName = firstName;
this.lastName = lastName;
this.address = address;
this.age = age;
this.studentClass = studentClass;
}
public int getRollNumber() {
return rollNumber;
}
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getStudentClass() {
return studentClass;
}
public void setStudentClass(String studentClass) {
this.studentClass = studentClass;
}
}
Now if the parameter will increase in class, then same will increase in constructor. now to initialise this we have to use code below like this
Student student = new Student(1, "Robin", "hood", "bengaluru", "18", "12th")
If we have to do the same using setter method then it will look like this
Student student = new Student();
student.setRollNumber(1);
student.setFirstName("Robin");
student.setLastName("hood");
student.setStudentClass("12");
student.setAge("18");
Will convert this to Builder Design pattern
class Student {
int rollNumber;
String firstName;
String lastName;
String address;
String age;
String studentClass;
public Student(Builder builder) {
this.rollNumber = builder.rollNumber;
this.firstName = builder.firstName;
this.lastName = builder.lastName;
this.age = builder.age;
this.address = builder.address;
this.studentClass = builder.studentClass;
}
public static class Builder {
int rollNumber;
String firstName;
String lastName;
String address;
String age;
String studentClass;
public Builder() {
}
public Builder setFirstName(String firstName) {
this.firstName = firstName;
return this;
}
public Builder setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
return this;
}
public Builder setLastName(String lastName) {
this.lastName = lastName;
return this;
}
public Builder setAge(String age) {
this.age = age;
return this;
}
public Builder setAddress(String address) {
this.address = address;
return this;
}
public Student build() {
return new Student(this);
}
}
}
Now to use we have write code like this
new Student.Builder()
.setRollNumber(1)
.setFirstName("robin")
.setLastName("hood")
.setAddress("india")
.setAge("18")
.build();
Please do comment if you have any, else clap if you like.