Builder Design Pattern example.

Rahul Sharma
2 min readMay 2, 2020

When to use Builder Design Pattern

  1. To optimize Telescoping constructor.
  2. Build immutable object
  3. 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.

--

--