Factory method pattern, which allows a class to defer instantiation to subclasses.[4] Prototype pattern, which specifies the kind of object to create using a prototypical instance, and creates new objects by cloning this prototype. Singleton pattern, which ensures that a class only has one instance, and provides a global point of access to it.[5]