Design Patterns#5 Builder Pattern

Burak KOCAK
2 min readFeb 17, 2023

--

Design Patterns

The Builder pattern is a creational design pattern in Java that is used to create objects that require a large number of parameters or have complex construction logic. The main idea behind the pattern is to separate the construction of an object from its representation, allowing for more flexibility and better control over the object creation process.

In the Builder pattern, a separate builder class is used to construct and configure the target object. The builder class typically has a fluent interface, allowing the caller to chain multiple method calls to configure the object. Once all the desired configuration is complete, the builder class is used to generate the final object.

The key benefit of the Builder pattern is that it allows for more flexible and expressive object construction, without the need for large numbers of constructor parameters or complex object initialization logic. By separating the object construction and configuration logic into a separate builder class, the code becomes more maintainable, easier to read and modify, and less error-prone.

Here’s an example of how the Builder pattern can be implemented in Java:

public class User {
private String firstName;
private String lastName;
private int age;

public static class Builder {
private String firstName;
private String lastName;
private int age;

public Builder withFirstName(String firstName) {
this.firstName = firstName;
return this;
}

public Builder withLastName(String lastName) {
this.lastName = lastName;
return this;
}

public Builder withAge(int age) {
this.age = age;
return this;
}

public User build() {
User user = new User();
user.firstName = this.firstName;
user.lastName = this.lastName;
user.age = this.age;
return user;
}
}
}

In this example, the User class has a static nested Builder class, which is used to create instances of the User class. The Builder class has methods for setting the various properties of the User object, and a build method that creates and returns the final User object.

The User class can then be created using the following code:

User user = new User.Builder()
.withFirstName("John")
.withLastName("Doe")
.withAge(30)
.build();

This creates a new User object with the specified first name, last name, and age, without the need for a large constructor with many parameters.

Prev: Design Patterns#4 Singleton Pattern

Next: Design Patterns#6 Adapter Pattern

--

--