Builder Design Pattern
The Builder Design Pattern is a creational design pattern used to construct complex objects step-by-step. It separates the construction of a complex object from its representation, allowing the same construction process to create different representations.
🔧 Definition
Builder Pattern allows you to create different types and representations of an object using the same construction code.
🧱 When to Use It
Use the Builder Pattern when:
You want to construct a complex object step by step.
You want to create different representations of an object using the same building process.
The construction process must allow different representations or configurations.
🏗️ Structure
1. Product
The complex object under construction.
2. Builder (Abstract)
Specifies an abstract interface for creating parts of a object.
3. ConcreteBuilder
Implements the interface.
Keeps track of the product being built.
Provides an interface to retrieve the final product.
4. Director
Constructs an object using the interface.
Orchestrates the building steps.
5. Client
Configures the builder and director and retrieves the final product.
🔁 UML Diagram
🧑💻 Code Example (Java-like Pseudocode)
Step 1: Product
Step 2: Builder
Step 3: Concrete Builder
Step 4: Director
Step 5: Client
✅ Benefits
Constructs complex objects step-by-step.
Code is more readable and flexible.
Different representations of a product can be created.
❌ Drawbacks
Requires creating many classes.
Might be overkill for simple objects.
🧩 Real-World Examples
StringBuilder in Java/C#
Builder in Lombok (Java) for constructing POJOs.
Document builders like HTML/XML builders.
UI builders in game engines and mobile apps.
🆚 Builder vs Factory
For more info https://www.geeksforgeeks.org/system-design/builder-design-pattern/