[Design Pattern] Creational Design Patterns
Creational patterns provide various object creation mechanisms, which increase flexibility and reuse of existing code.
Provides an interface for creating objects in a superclass, but allows subclasses to alter the type of objects that will be created.
Lets you produce families of related objects without specifying their concrete classes.
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.
Lets you copy existing objects without making your code dependent on their classes.
Lets you ensure that a class has only one instance, while providing a global access point to this instance.