120 likes | 242 Views
Builder A 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
E N D
BuilderA Creational Design Pattern A Presentation by Alex Bluhm And
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
Director Builder construct() buildPartA()buildPartB() for all parts in structure { builder->buildPart() } ConcreteBuilder buildPartA()buildPartB()getResult() Structure for Participants Client Product
aClient aDirector aConcreteBuilder new ConcreteBuilder new Director(aConcreteBuilder) construct() buildPartA() buildPartB() buildPartC() getResult() Builder Pattern Interaction
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
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