The Factory Pattern(s)
Simple Factory
Encapsulate object creation within a class.
Factory Method
Define a class that does operations on an object. Let sub-classes choose the object.
Abstract Factory
Encapsulate creation of related objects within a class. Let sub-classes choose the object.