Upload
deirdre-gibson
View
220
Download
0
Embed Size (px)
Citation preview
BuilderA Creational Design Pattern
A Presentation by Alex Bluhm
And
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
• Builder• ConcreteBuilder• Director• Product
Product
ConcreteBuilder
buildPartA()buildPartB()getResult()
Director
construct()
Builder
buildPartA()buildPartB()
Client
for all parts in structure { builder->buildPart()}
Structure for Participants
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 BuilderClass 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
Special Thanks
• Design Patterns. Elements of Reusable Object-Oriented Software– Erich Gamma, Richard Helm, Ralph Johnson,
John Vlissides
• Provider of Design Pattern powerpoint slides online. (http://vik.ktu.lt/moduliai/)
• Bob the Builder