Factory Design Patton

Defines an interface for creating an object, but leaves the choice of its type to the sub classes.