This interface should be used for classes that are used to
create specific Objects. The implementing class should know
about the created Object, and how to create it based on
the data passed in.
This interface is typically used in classes that you want
to use a specific Object, but not sub-class for each
specific Object. Instead, pass in a Factory class, and
let it create the specific Object for you.