Understanding Builder Design Pattern

Understanding Builder Design Pattern

Build complex objects step by step

Photo by Nazarii Yurkov on Unsplash

Let’s say we want to create an Employee class that has the below mandatory and optional attributes.

Mandatory Attributes

  • firstName
  • lastName
  • primaryMobileNumber
  • primaryEmail

Optional Attributes

  • secondaryMobileNumber
  • secondaryEmail

The Employee class and its constructor looks like below

The main problem with the above constructor is that we have to manually pass null values for the optional attributes that we don’t want to use.

It looks simple in our class, but consider a complex class with more mandatory and optional attributes. And we also don’t know which one is mandatory and which one is optional.

Another way to create an Employee class is to have multiple constructors for the required combination of the attributes which is even complex.

Here comes the lifesaver, Builder Design Pattern.

Builder pattern builds a complex object using simple objects and using a step by step approach
- tutorialspoint

In Builder Pattern, the actual class relies on another class called Builder Class for object creation.

Using Builder Pattern, an object can be created using multiple steps, An Initial Step, 0 or more Intermediate Steps, and Terminal Step.

Now, we added a nested class inside the Employee class called EmployeeBuilder. The EmployeeBuilder class will be responsible for the construction of the Employee object.

All the mandatory attributes can be set via the EmployeeBuilder constructor.

All the optional attributes can be set via the public setter methods setSecondaryMobileNumber and setSecondaryEmail

Once all the attributes are set, the object can be created by calling the build method of the EmployeeBuilder class. The build method creates and returns an Employee object.

The constructor of the Employee class is made private so that it can be accessed only from the EmployeeBuilder class.

Now, the object can be created using the EmployeeBuilder class as given below

The entire source code can be found in the below gist


Thank you 🤘

To know more about me, visit ganeshkumarm.me

Understanding Builder Design Pattern was originally published in Nerd For Tech on Medium, where people are continuing the conversation by highlighting and responding to this story.