Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Builder

A Creational Design Pattern


What are Creational Design
Patterns?
Creational Design Patterns
• Abstract instantiation process
• Flexibility in what’s created, who creates it,
how it’s created and when
• Patterns:
– Abstract Factory
– Builder
– Factory Method
– Prototype
– Singleton
Builder Design Pattern
• Separates the construction of a complex
object from its representation
• Same construction process can create
different representations
• Bob says… Builders specify abstract
interfaces for creating parts of
a Product object
Participants in Builder Pattern
• Builder
• ConcreteBuilder
• Director
• Product
Structure for Participants
Client

Director Builder
construct() buildPartA()
buildPartB()

for all parts in structure


{
builder->buildPart()
}
ConcreteBuilder
buildPartA()
buildPartB()
Product getResult()
Builder Pattern Interaction
aClient aDirector aConcreteBuilder
new ConcreteBuilder

new Director(aConcreteBuilder)

construct() buildPartA()

buildPartB()

buildPartC()

getResult()
When to use a Builder Pattern
• When the algorithm for building a complex
object should be independent of the parts
that make up the object and how they’re
assembled
• When the construction process must allow
different representations for the object that’s
constructed
• When building a composite structural object
Key Consequence of Builder
Pattern
• Vary a product’s internal representation
• Isolates code for construction and representation
Don’t forget that the Builder Design
Pattern also gives you finer control
over the construction process!
How to code a builder
• Assembly and Construction Interface
• No abstract class for products
• Empty methods as default in Builder
Class MazeBuilder {
Public:
virtual void BuildMaze() { }
virtual void BuildRoom(int room) { }
virtual void BuildDoor(int roomFrom, int roomTo) { }

virtual Maze* GetMaze() { return 0;}


Protected:
MazeBuilder();
};
Other Creational Patterns
• Object Creation
– Abstract Factory
– Prototype
– Singleton
• Class Creation
– Factory Method

You might also like