Provides a simple decision making class which returns one of several possible subclasses of an abstract base class depending on data it is provided
Factory Pattern
Abstract Factory Pattern
Builder Pattern
Prototype Pattern