SlideShare a Scribd company logo
CODE LIKE A NINJA
CREATIONAL DESIGN PATTERNS
SESSION RESOURCES
• Presentation session notes including link to this session, will be available on
http://learningaboutfudge.blogspot.com
• All the source for this session is publically available at:
https://github.com/SheepWorx/Training
• RSS Feed:
http://learningaboutfudge.blogspot.com/feeds/posts/default?alt=rss
• Local Network: dmeyer-msharetrainingCode Like a Ninja
• Source was compiled using Visual Studio 2012
• http://www.gofpatterns.com/
Design Patterns
Creational Design Patterns
Structural Design Patterns
Behavioral Design Patterns
CREATIONAL DESIGN PATTERNS
Definition
Creational design patterns are design patterns that deal with object
creation mechanisms, trying to create objects in a manner suitable to
the situation.
• Abstract Factory
• Builder
• Factory Method
• Prototype
• Singleton
CREATIONAL DESIGN PATTERNS
FACTORY (ABSTRACT AND METHOD)
• Lets a class defer instantiation into subclasses
• Allows you to introduce new classes without modifying the code
• Factory Method: when you need to delegate the creation of single
objects
• Abstract Factory: When you need to delegate the creation of families
of related or dependant objects without specifying the concrete
classes
SIMPLE FACTORY
Client Factory
Concrete
Class 1
Concrete
Class 2
Concrete
Class 2
Base
class/
interface
SIMPLE FACTORY
• Classes that need to be instantiated need to inherit from a common
class (abstract class or interface)
• The factory will receive some form of identifier and create the correct
concrete class
• Will return it via its base class (abstract class or interface)
SIMPLE FACTORY
See simple factory code example
Question(s):
What will happen when we need to add new types
FACTORY METHOD
Client
Concrete
Factory 1
Concrete
Factory 2
Base
Factory
Concrete
Class 1
Concrete
Class 2
Base
class/
interface
FACTORY METHOD
• Classes you want to create must inherit from a base object (abstract class or
interface)
• Each class will have its own factory
• The factories themselves will inherit off a base factory (abstract class)
• Base factory will control behaviour while individual factories will be
responsible for returning concrete instances of the desired class
• If unique logic exists for a particular class, I recommend it be encapsulated
within its factory
FACTORY METHOD – WHEN TO USE IT
It should be used when…
• A class cannot anticipate the class of objects it must create
• A class wants it subclasses to specify the objects it creates
• Classes delegate responsibility to one of several helper classes and
you want to localize the knowledge of which helper subclass is the
delegate
FACTORY METHOD – BENEFITS
• Eliminates the need to bind application classes to your code
The code only deals with the interface
• Enables subclasses to provide an extended version of an object
because creating an object inside a class is more flexible than
creating the object directly in the client
FACTORY METHOD
See factory method code example
ABSTRACT FACTORY
Client
Abstract
Factory
Abstract
Product A
Abstract
Product B
Concrete
Factory 1
Concrete
Factory 2 Product A2
Product
B2
Product
B1
Product A1
ABSTRACT FACTORY
• Provides an interface for creating families of related or dependant
objects without specifying their concrete classes
• The client interacts only with the product interfaces and the abstract
factory class. It thus never knows about the concrete construction
provided by this pattern
• Abstract factory is similar to the factory method, except it creates
families of related objects.
ABSTRACT FACTORY – WHEN TO USE IT
It should be used when…
• The system should be independent of how its products are created,
composed and represented
• The system should be configured with one of multiple families of
products
• The family of related product objects is designed to be used together
and you must enforce this constraint.
ABSTRACT FACTORY– BENEFITS
• Isolates concrete classes
• Makes exchanging product families easy
• Promotes consistency among products
ABSTRACT FACTORY
See abstract factory code example
SESSION RESOURCES
• Presentation session notes including link to this session, will be available on
http://learningaboutfudge.blogspot.com
• All the source for this session is publically available at:
https://github.com/SheepWorx/Training
• RSS Feed:
http://learningaboutfudge.blogspot.com/feeds/posts/default?alt=rss
• Local Network: dmeyer-msharetrainingCode Like a Ninja
• Source was compiled using Visual Studio 2012
• http://www.gofpatterns.com/

More Related Content

PPS
Design Patterns For 70% Of Programmers In The World
PPTX
Let us understand design pattern
PDF
Creational Design Patterns
PDF
Design Patterns Illustrated
PPT
Unit 2-Design Patterns.ppt
PPTX
Creational Design Patterns.pptx
PPTX
Creational pattern 2
PPT
Design Patterns For 70% Of Programmers In The World
Let us understand design pattern
Creational Design Patterns
Design Patterns Illustrated
Unit 2-Design Patterns.ppt
Creational Design Patterns.pptx
Creational pattern 2

Similar to Code Like a Ninja Session 7 - Creational Design Patterns (20)

PPTX
Creational Patterns
PPTX
CREATIONAL Pattern .pptx
PPTX
design patter related ppt and presentation
PPTX
PDF
Factory Design Pattern
PDF
03-Factory Method for design patterns.pdf
PPT
Design Pattern For C# Part 1
DOCX
Abstract factory
PPTX
Design Pattern - Factory Method Pattern
PPTX
Creational pattern
PPTX
Design Patterns - Abstract Factory Pattern
PPTX
Factory Method Pattern
PPTX
Factory Method Pattern
PDF
E1803023637
PPTX
Gof design patterns
PDF
Factory patterns
PPTX
Factory Pattern
PPTX
Software System Architecture-Lecture 6.pptx
PPTX
Design Patterns
PDF
27418524 design-patterns-dot-net-with-examples
Creational Patterns
CREATIONAL Pattern .pptx
design patter related ppt and presentation
Factory Design Pattern
03-Factory Method for design patterns.pdf
Design Pattern For C# Part 1
Abstract factory
Design Pattern - Factory Method Pattern
Creational pattern
Design Patterns - Abstract Factory Pattern
Factory Method Pattern
Factory Method Pattern
E1803023637
Gof design patterns
Factory patterns
Factory Pattern
Software System Architecture-Lecture 6.pptx
Design Patterns
27418524 design-patterns-dot-net-with-examples
Ad

Recently uploaded (20)

PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Unlocking AI with Model Context Protocol (MCP)
PPT
Teaching material agriculture food technology
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Spectroscopy.pptx food analysis technology
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
cuic standard and advanced reporting.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
sap open course for s4hana steps from ECC to s4
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Empathic Computing: Creating Shared Understanding
Per capita expenditure prediction using model stacking based on satellite ima...
Advanced methodologies resolving dimensionality complications for autism neur...
Unlocking AI with Model Context Protocol (MCP)
Teaching material agriculture food technology
Big Data Technologies - Introduction.pptx
Spectroscopy.pptx food analysis technology
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Dropbox Q2 2025 Financial Results & Investor Presentation
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
cuic standard and advanced reporting.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
sap open course for s4hana steps from ECC to s4
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
MYSQL Presentation for SQL database connectivity
Empathic Computing: Creating Shared Understanding
Ad

Code Like a Ninja Session 7 - Creational Design Patterns

  • 1. CODE LIKE A NINJA CREATIONAL DESIGN PATTERNS
  • 2. SESSION RESOURCES • Presentation session notes including link to this session, will be available on http://learningaboutfudge.blogspot.com • All the source for this session is publically available at: https://github.com/SheepWorx/Training • RSS Feed: http://learningaboutfudge.blogspot.com/feeds/posts/default?alt=rss • Local Network: dmeyer-msharetrainingCode Like a Ninja • Source was compiled using Visual Studio 2012 • http://www.gofpatterns.com/
  • 3. Design Patterns Creational Design Patterns Structural Design Patterns Behavioral Design Patterns
  • 4. CREATIONAL DESIGN PATTERNS Definition Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation.
  • 5. • Abstract Factory • Builder • Factory Method • Prototype • Singleton CREATIONAL DESIGN PATTERNS
  • 6. FACTORY (ABSTRACT AND METHOD) • Lets a class defer instantiation into subclasses • Allows you to introduce new classes without modifying the code • Factory Method: when you need to delegate the creation of single objects • Abstract Factory: When you need to delegate the creation of families of related or dependant objects without specifying the concrete classes
  • 7. SIMPLE FACTORY Client Factory Concrete Class 1 Concrete Class 2 Concrete Class 2 Base class/ interface
  • 8. SIMPLE FACTORY • Classes that need to be instantiated need to inherit from a common class (abstract class or interface) • The factory will receive some form of identifier and create the correct concrete class • Will return it via its base class (abstract class or interface)
  • 9. SIMPLE FACTORY See simple factory code example Question(s): What will happen when we need to add new types
  • 10. FACTORY METHOD Client Concrete Factory 1 Concrete Factory 2 Base Factory Concrete Class 1 Concrete Class 2 Base class/ interface
  • 11. FACTORY METHOD • Classes you want to create must inherit from a base object (abstract class or interface) • Each class will have its own factory • The factories themselves will inherit off a base factory (abstract class) • Base factory will control behaviour while individual factories will be responsible for returning concrete instances of the desired class • If unique logic exists for a particular class, I recommend it be encapsulated within its factory
  • 12. FACTORY METHOD – WHEN TO USE IT It should be used when… • A class cannot anticipate the class of objects it must create • A class wants it subclasses to specify the objects it creates • Classes delegate responsibility to one of several helper classes and you want to localize the knowledge of which helper subclass is the delegate
  • 13. FACTORY METHOD – BENEFITS • Eliminates the need to bind application classes to your code The code only deals with the interface • Enables subclasses to provide an extended version of an object because creating an object inside a class is more flexible than creating the object directly in the client
  • 14. FACTORY METHOD See factory method code example
  • 15. ABSTRACT FACTORY Client Abstract Factory Abstract Product A Abstract Product B Concrete Factory 1 Concrete Factory 2 Product A2 Product B2 Product B1 Product A1
  • 16. ABSTRACT FACTORY • Provides an interface for creating families of related or dependant objects without specifying their concrete classes • The client interacts only with the product interfaces and the abstract factory class. It thus never knows about the concrete construction provided by this pattern • Abstract factory is similar to the factory method, except it creates families of related objects.
  • 17. ABSTRACT FACTORY – WHEN TO USE IT It should be used when… • The system should be independent of how its products are created, composed and represented • The system should be configured with one of multiple families of products • The family of related product objects is designed to be used together and you must enforce this constraint.
  • 18. ABSTRACT FACTORY– BENEFITS • Isolates concrete classes • Makes exchanging product families easy • Promotes consistency among products
  • 19. ABSTRACT FACTORY See abstract factory code example
  • 20. SESSION RESOURCES • Presentation session notes including link to this session, will be available on http://learningaboutfudge.blogspot.com • All the source for this session is publically available at: https://github.com/SheepWorx/Training • RSS Feed: http://learningaboutfudge.blogspot.com/feeds/posts/default?alt=rss • Local Network: dmeyer-msharetrainingCode Like a Ninja • Source was compiled using Visual Studio 2012 • http://www.gofpatterns.com/

Editor's Notes

  • #2: Basic srpExposeutils class antipatternExpose singleton as a bad pattern to use (use at own risk)