Javatpoint Logo
Javatpoint Logo

Builder Design Pattern

The builder design pattern is one type of creational design pattern which separates the construction of a complex from its representation so that the same construction process can create various representations. We can easily create a complex object. With the help of a newly created construction code, we can produce various types of representation.

We can solve many object creation related problems using the builder design patterns in object-oriented programming.

Why Use Builder Design Pattern?

The Builder method is used to define a common class that is responsible for building the required object.

Without this technique, we have to create multiple objects to fulfill the main class object. The components of this pattern are given below.

  • Builder - It is responsible for defining contract to build different parts of one product.
  • ConcreteBuilder - It is responsible for implementing builder contract.
  • Product - It is a complex product which consists of various sub part.
  • ProductServer - It provides the service of the product to who need it.

Problems

Suppose we want to join one of the courses of any famous training center. We go there and ask for the fee structure, placement, timing available, and seat availability. The college administrative will check their system and tell you about what you asked for.

So here is the main purpose of designing the system flexible, well-structured and profitable. The inexperienced developer will create a separate and unique class for every course available in the training center. The developer will then create a separate instance for every class, although that is unnecessary every time. The main problem will arise when a college or training center decides to add a new course; then developers have to add new classes because their code is not much flexible.

Let's understand the above logic through the Python script.

Example -

Output:

Name of Course: Java and its fee_structure: >
Name of Course: Swift and its fee_structure: >
Name of Course: DSA and its fee_structure: >

Solution

Our primary focus is to get proper information regarding any course from the training institute. It can be Python, Swift, or Java. If we find the particular course, such as finding details about the course, fee structure, timings, batch availability, and batches. It will take a lot of time. Here, we will use the builder patterns to overcome this problem. We can solve the following types of problems using the Builder design pattern.

  • How a class can create a different representation of a complex object.
  • How a class can simplify the created complex object.

Output:

fee_structure : 18000 | batch_availibility: 5

Benefits of Builder Methods

Below are the advantages of builder methods.

  • We can change the internal representation of the objects.
  • It provides the facility to use the same construction code for the other representation.
  • We can separate the business logic as well as the complex construction code from the each other.
  • The object can be created step by step, and run recursively.

Demerits of Builder Methods

We define the disadvantages of the builder which are given below.

  • It increases the code complexity because the builder pattern requires multiple new classes.
  • Developers make sure that the builder class to be mutable.
  • It doesn't provide the guarantee to the data members to be initialized.

Applicability of Design Pattern

Builder pattern can be applicable in the following situations.

Builder Method offers us to create a complex object step by step. But it is quite handy if we call the steps recursively. It doesn't allow client code to fetch the incomplete data because it prevents to expose the unfinished object.

Builder Method can be applicable if we create the various representation of the product and that involves the similar step by only differ in the details.







Youtube For Videos Join Our Youtube Channel: Join Now

Feedback


Help Others, Please Share

facebook twitter pinterest

Learn Latest Tutorials


Preparation


Trending Technologies


B.Tech / MCA