Creational Design Patterns
Creational design patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
![Factory Method](/images/patterns/cards/factory-method-mini.png?id=72619e9527893374b98a5913779ac167)
Provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created.
![Abstract Factory](/images/patterns/cards/abstract-factory-mini.png?id=4c3927c446313a38ce77dfee38111e27)
Lets you produce families of related objects without specifying their concrete classes.
![Builder](/images/patterns/cards/builder-mini.png?id=19b95fd05e6469679752c0554b116815)
Lets you construct complex objects step by step. The pattern allows you to produce different types and representations of an object using the same construction code.
![Prototype](/images/patterns/cards/prototype-mini.png?id=bc3046bb39ff36574c08d49839fd1c8e)
Lets you copy existing objects without making your code dependent on their classes.
![Singleton](/images/patterns/cards/singleton-mini.png?id=914e1565dfdf15f240e766163bd303ec)
Lets you ensure that a class has only one instance, while providing a global access point to this instance.