0% found this document useful (0 votes)
30 views11 pages

Builder

Uploaded by

anasblouch223
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views11 pages

Builder

Uploaded by

anasblouch223
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 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